blob: 0c907857c47fed1249791697dbc830549618d1ad [file] [log] [blame]
Ryan OSheade36e4a2020-03-13 16:26:19 +00001<!-- Copyright (c) 2020 ARM Limited. -->
2<!-- -->
3<!-- SPDX-License-Identifier: MIT -->
4<!-- -->
5<!-- HTML header for doxygen 1.8.13-->
6<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7<html xmlns="http://www.w3.org/1999/xhtml">
8<head>
9<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
10<meta http-equiv="X-UA-Compatible" content="IE=9"/>
11<meta name="generator" content="Doxygen 1.8.13"/>
12<meta name="robots" content="NOINDEX, NOFOLLOW" />
13<meta name="viewport" content="width=device-width, initial-scale=1"/>
14<title>ArmNN: armnn Namespace Reference</title>
15<link href="tabs.css" rel="stylesheet" type="text/css"/>
16<script type="text/javascript" src="jquery.js"></script>
17<script type="text/javascript" src="dynsections.js"></script>
18<link href="navtree.css" rel="stylesheet" type="text/css"/>
19<script type="text/javascript" src="resize.js"></script>
20<script type="text/javascript" src="navtreedata.js"></script>
21<script type="text/javascript" src="navtree.js"></script>
22<script type="text/javascript">
23 $(document).ready(initResizable);
24</script>
25<link href="search/search.css" rel="stylesheet" type="text/css"/>
26<script type="text/javascript" src="search/searchdata.js"></script>
27<script type="text/javascript" src="search/search.js"></script>
28<script type="text/x-mathjax-config">
29 MathJax.Hub.Config({
30 extensions: ["tex2jax.js"],
31 jax: ["input/TeX","output/HTML-CSS"],
32});
33</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
34<link href="doxygen.css" rel="stylesheet" type="text/css" />
35<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
36</head>
37<body>
38<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
39<div id="titlearea">
40<table cellspacing="0" cellpadding="0">
41 <tbody>
42 <tr style="height: 56px;">
43 <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
44 <td style="padding-left: 0.5em;">
45 <div id="projectname">
46 &#160;<span id="projectnumber">20.02</span>
47 </div>
48 </td>
49 </tr>
50 </tbody>
51</table>
52</div>
53<!-- end header part -->
54<!-- Generated by Doxygen 1.8.13 -->
55<script type="text/javascript">
56var searchBox = new SearchBox("searchBox", "search",false,'Search');
57</script>
58<script type="text/javascript" src="menudata.js"></script>
59<script type="text/javascript" src="menu.js"></script>
60<script type="text/javascript">
61$(function() {
62 initMenu('',true,false,'search.php','Search');
63 $(document).ready(function() { init_search(); });
64});
65</script>
66<div id="main-nav"></div>
67</div><!-- top -->
68<div id="side-nav" class="ui-resizable side-nav-resizable">
69 <div id="nav-tree">
70 <div id="nav-tree-contents">
71 <div id="nav-sync" class="sync"></div>
72 </div>
73 </div>
74 <div id="splitbar" style="-moz-user-select:none;"
75 class="ui-resizable-handle">
76 </div>
77</div>
78<script type="text/javascript">
79$(document).ready(function(){initNavTree('namespacearmnn.xhtml','');});
80</script>
81<div id="doc-content">
82<!-- window showing the filter options -->
83<div id="MSearchSelectWindow"
84 onmouseover="return searchBox.OnSearchSelectShow()"
85 onmouseout="return searchBox.OnSearchSelectHide()"
86 onkeydown="return searchBox.OnSearchSelectKey(event)">
87</div>
88
89<!-- iframe showing the search results (closed by default) -->
90<div id="MSearchResultsWindow">
91<iframe src="javascript:void(0)" frameborder="0"
92 name="MSearchResults" id="MSearchResults">
93</iframe>
94</div>
95
96<div class="header">
97 <div class="summary">
98<a href="#namespaces">Namespaces</a> &#124;
99<a href="#nested-classes">Classes</a> &#124;
100<a href="#typedef-members">Typedefs</a> &#124;
101<a href="#enum-members">Enumerations</a> &#124;
102<a href="#func-members">Functions</a> &#124;
103<a href="#var-members">Variables</a> </div>
104 <div class="headertitle">
105<div class="title">armnn Namespace Reference</div> </div>
106</div><!--header-->
107<div class="contents">
108
109<p>Copyright (c) 2020 ARM Limited.
110<a href="#details">More...</a></p>
111<table class="memberdecls">
112<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
113Namespaces</h2></td></tr>
114<tr class="memitem:namespacearmnn_1_1gatordmock"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1gatordmock.xhtml">gatordmock</a></td></tr>
115<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
116<tr class="memitem:namespacearmnn_1_1optimizations"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1optimizations.xhtml">optimizations</a></td></tr>
117<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
118<tr class="memitem:namespacearmnn_1_1profiling"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1profiling.xhtml">profiling</a></td></tr>
119<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
120<tr class="memitem:namespacearmnn_1_1test"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1test.xhtml">test</a></td></tr>
121<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
122<tr class="memitem:namespacearmnn_1_1timelinedecoder"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn_1_1timelinedecoder.xhtml">timelinedecoder</a></td></tr>
123<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
124</table><table class="memberdecls">
125<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
126Classes</h2></td></tr>
127<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1abs.xhtml">abs</a></td></tr>
128<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
129<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_abs_layer.xhtml">AbsLayer</a></td></tr>
130<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
131<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_abs_queue_descriptor.xhtml">AbsQueueDescriptor</a></td></tr>
132<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
133<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a></td></tr>
134<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml" title="An ActivationDescriptor for the ActivationLayer. ">ActivationDescriptor</a> for the <a class="el" href="classarmnn_1_1_activation_layer.xhtml" title="This layer represents an activation operation with the specified activation function. ">ActivationLayer</a>. <a href="structarmnn_1_1_activation_descriptor.xhtml#details">More...</a><br /></td></tr>
135<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
136<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_activation_layer.xhtml">ActivationLayer</a></td></tr>
137<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an activation operation with the specified activation function. <a href="classarmnn_1_1_activation_layer.xhtml#details">More...</a><br /></td></tr>
138<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
139<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_activation_queue_descriptor.xhtml">ActivationQueueDescriptor</a></td></tr>
140<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
141<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_added_layer_observable.xhtml">AddedLayerObservable</a></td></tr>
142<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
143<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_addition_layer.xhtml">AdditionLayer</a></td></tr>
144<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an addition operation. <a href="classarmnn_1_1_addition_layer.xhtml#details">More...</a><br /></td></tr>
145<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
146<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a></td></tr>
147<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
148<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a></td></tr>
149<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml" title="An ArgMinMaxDescriptor for ArgMinMaxLayer. ">ArgMinMaxDescriptor</a> for <a class="el" href="classarmnn_1_1_arg_min_max_layer.xhtml" title="This layer represents a ArgMinMax operation. ">ArgMinMaxLayer</a>. <a href="structarmnn_1_1_arg_min_max_descriptor.xhtml#details">More...</a><br /></td></tr>
150<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
151<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_arg_min_max_layer.xhtml">ArgMinMaxLayer</a></td></tr>
152<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a ArgMinMax operation. <a href="classarmnn_1_1_arg_min_max_layer.xhtml#details">More...</a><br /></td></tr>
153<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
154<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_arg_min_max_queue_descriptor.xhtml">ArgMinMaxQueueDescriptor</a></td></tr>
155<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
156<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a></td></tr>
157<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
158<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_options.xhtml">BackendOptions</a></td></tr>
159<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Struct for the users to pass backend specific options. <a href="structarmnn_1_1_backend_options.xhtml#details">More...</a><br /></td></tr>
160<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
161<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_profiling_exception.xhtml">BackendProfilingException</a></td></tr>
162<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
163<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_registry.xhtml">BackendRegistry</a></td></tr>
164<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
165<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a></td></tr>
166<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
167<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_backend_unavailable_exception.xhtml">BackendUnavailableException</a></td></tr>
168<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for non-fatal exceptions raised while initialising a backend. <a href="classarmnn_1_1_backend_unavailable_exception.xhtml#details">More...</a><br /></td></tr>
169<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
170<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_backend_version.xhtml">BackendVersion</a></td></tr>
171<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bad_optional_access_exception.xhtml">BadOptionalAccessException</a></td></tr>
173<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
174<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_iterator.xhtml">BaseIterator</a></td></tr>
175<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
176<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_memory_manager.xhtml">BaseMemoryManager</a></td></tr>
177<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_tensor.xhtml">BaseTensor</a></td></tr>
179<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
180<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_base_workload.xhtml">BaseWorkload</a></td></tr>
181<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
182<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a></td></tr>
183<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml" title="A BatchNormalizationDescriptor for the BatchNormalizationLayer. ">BatchNormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_normalization_layer.xhtml" title="This layer represents a batch normalization operation. ">BatchNormalizationLayer</a>. <a href="structarmnn_1_1_batch_normalization_descriptor.xhtml#details">More...</a><br /></td></tr>
184<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
185<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_normalization_layer.xhtml">BatchNormalizationLayer</a></td></tr>
186<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a batch normalization operation. <a href="classarmnn_1_1_batch_normalization_layer.xhtml#details">More...</a><br /></td></tr>
187<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
188<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.xhtml">BatchNormalizationQueueDescriptor</a></td></tr>
189<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
190<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a></td></tr>
191<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml" title="A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer. ">BatchToSpaceNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml" title="This layer represents a BatchToSpaceNd operation. ">BatchToSpaceNdLayer</a>. <a href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml#details">More...</a><br /></td></tr>
192<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
193<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">BatchToSpaceNdLayer</a></td></tr>
194<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a BatchToSpaceNd operation. <a href="classarmnn_1_1_batch_to_space_nd_layer.xhtml#details">More...</a><br /></td></tr>
195<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
196<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_batch_to_space_nd_queue_descriptor.xhtml">BatchToSpaceNdQueueDescriptor</a></td></tr>
197<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
198<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a></td></tr>
199<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
200<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_b_float16_decoder.xhtml">BFloat16Decoder</a></td></tr>
201<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
202<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_b_float16_encoder.xhtml">BFloat16Encoder</a></td></tr>
203<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
204<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_compatible.xhtml">BiasAndWeightsTypesCompatible</a></td></tr>
205<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
206<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_bias_and_weights_types_match.xhtml">BiasAndWeightsTypesMatch</a></td></tr>
207<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
208<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_bindable_layer.xhtml">BindableLayer</a></td></tr>
209<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
210<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_boolean_encoder.xhtml">BooleanEncoder</a></td></tr>
211<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
212<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_broadcast_loop.xhtml">BroadcastLoop</a></td></tr>
213<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
214<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a></td></tr>
215<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
216<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_abs_workload.xhtml">ClAbsWorkload</a></td></tr>
217<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
218<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_activation_workload.xhtml">ClActivationWorkload</a></td></tr>
219<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
220<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_addition_workload.xhtml">ClAdditionWorkload</a></td></tr>
221<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
222<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_arg_min_max_workload.xhtml">ClArgMinMaxWorkload</a></td></tr>
223<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
224<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend.xhtml">ClBackend</a></td></tr>
225<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
226<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_backend_context.xhtml">ClBackendContext</a></td></tr>
227<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
228<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_normalization_float_workload.xhtml">ClBatchNormalizationFloatWorkload</a></td></tr>
229<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
230<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_batch_to_space_nd_workload.xhtml">ClBatchToSpaceNdWorkload</a></td></tr>
231<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
232<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_concat_workload.xhtml">ClConcatWorkload</a></td></tr>
233<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
234<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_constant_workload.xhtml">ClConstantWorkload</a></td></tr>
235<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
236<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_context_control.xhtml">ClContextControl</a></td></tr>
237<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
238<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp16_to_fp32_workload.xhtml">ClConvertFp16ToFp32Workload</a></td></tr>
239<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
240<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convert_fp32_to_fp16_workload.xhtml">ClConvertFp32ToFp16Workload</a></td></tr>
241<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
242<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_convolution2d_workload.xhtml">ClConvolution2dWorkload</a></td></tr>
243<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
244<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depth_to_space_workload.xhtml">ClDepthToSpaceWorkload</a></td></tr>
245<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
246<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_depthwise_convolution_workload.xhtml">ClDepthwiseConvolutionWorkload</a></td></tr>
247<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
248<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_dequantize_workload.xhtml">ClDequantizeWorkload</a></td></tr>
249<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
250<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_division_float_workload.xhtml">ClDivisionFloatWorkload</a></td></tr>
251<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
252<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_floor_float_workload.xhtml">ClFloorFloatWorkload</a></td></tr>
253<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
254<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_fully_connected_workload.xhtml">ClFullyConnectedWorkload</a></td></tr>
255<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
256<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_greater_workload.xhtml">ClGreaterWorkload</a></td></tr>
257<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
258<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_instance_normalization_workload.xhtml">ClInstanceNormalizationWorkload</a></td></tr>
259<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
260<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_l2_normalization_float_workload.xhtml">ClL2NormalizationFloatWorkload</a></td></tr>
261<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
262<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_layer_support.xhtml">ClLayerSupport</a></td></tr>
263<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
264<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_lstm_float_workload.xhtml">ClLstmFloatWorkload</a></td></tr>
265<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
266<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_maximum_workload.xhtml">ClMaximumWorkload</a></td></tr>
267<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
268<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_mean_workload.xhtml">ClMeanWorkload</a></td></tr>
269<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
270<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_memory_manager.xhtml">ClMemoryManager</a></td></tr>
271<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
272<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_minimum_workload.xhtml">ClMinimumWorkload</a></td></tr>
273<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
274<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_multiplication_workload.xhtml">ClMultiplicationWorkload</a></td></tr>
275<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
276<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_normalization_float_workload.xhtml">ClNormalizationFloatWorkload</a></td></tr>
277<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
278<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pad_workload.xhtml">ClPadWorkload</a></td></tr>
279<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
280<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_permute_workload.xhtml">ClPermuteWorkload</a></td></tr>
281<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
282<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_pooling2d_workload.xhtml">ClPooling2dWorkload</a></td></tr>
283<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
284<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_prelu_workload.xhtml">ClPreluWorkload</a></td></tr>
285<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
286<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantized_lstm_workload.xhtml">ClQuantizedLstmWorkload</a></td></tr>
287<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
288<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_quantize_workload.xhtml">ClQuantizeWorkload</a></td></tr>
289<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
290<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_reshape_workload.xhtml">ClReshapeWorkload</a></td></tr>
291<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
292<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_resize_workload.xhtml">ClResizeWorkload</a></td></tr>
293<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
294<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_rsqrt_workload.xhtml">ClRsqrtWorkload</a></td></tr>
295<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
296<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_runtime_unavailable_exception.xhtml">ClRuntimeUnavailableException</a></td></tr>
297<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
298<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_slice_workload.xhtml">ClSliceWorkload</a></td></tr>
299<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
300<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_float_workload.xhtml">ClSoftmaxFloatWorkload</a></td></tr>
301<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
302<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_softmax_uint8_workload.xhtml">ClSoftmaxUint8Workload</a></td></tr>
303<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
304<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_batch_nd_workload.xhtml">ClSpaceToBatchNdWorkload</a></td></tr>
305<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
306<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_space_to_depth_workload.xhtml">ClSpaceToDepthWorkload</a></td></tr>
307<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
308<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_splitter_workload.xhtml">ClSplitterWorkload</a></td></tr>
309<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
310<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_stack_workload.xhtml">ClStackWorkload</a></td></tr>
311<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
312<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_strided_slice_workload.xhtml">ClStridedSliceWorkload</a></td></tr>
313<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
314<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_sub_tensor_handle.xhtml">ClSubTensorHandle</a></td></tr>
315<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
316<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_subtraction_workload.xhtml">ClSubtractionWorkload</a></td></tr>
317<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
318<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle.xhtml">ClTensorHandle</a></td></tr>
319<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
320<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tensor_handle_factory.xhtml">ClTensorHandleFactory</a></td></tr>
321<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
322<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_transpose_convolution2d_workload.xhtml">ClTransposeConvolution2dWorkload</a></td></tr>
323<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
324<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_transpose_workload.xhtml">ClTransposeWorkload</a></td></tr>
325<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
326<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_tuned_parameters.xhtml">ClTunedParameters</a></td></tr>
327<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
328<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cl_workload_factory.xhtml">ClWorkloadFactory</a></td></tr>
329<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
330<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_descriptor.xhtml">ComparisonDescriptor</a></td></tr>
331<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_comparison_descriptor.xhtml" title="A ComparisonDescriptor for the ComparisonLayer. ">ComparisonDescriptor</a> for the <a class="el" href="classarmnn_1_1_comparison_layer.xhtml" title="This layer represents a comparison operation. ">ComparisonLayer</a>. <a href="structarmnn_1_1_comparison_descriptor.xhtml#details">More...</a><br /></td></tr>
332<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
333<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_comparison_layer.xhtml">ComparisonLayer</a></td></tr>
334<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a comparison operation. <a href="classarmnn_1_1_comparison_layer.xhtml#details">More...</a><br /></td></tr>
335<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
336<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_comparison_queue_descriptor.xhtml">ComparisonQueueDescriptor</a></td></tr>
337<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
338<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_concat_layer.xhtml">ConcatLayer</a></td></tr>
339<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a merge operation. <a href="classarmnn_1_1_concat_layer.xhtml#details">More...</a><br /></td></tr>
340<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
341<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a></td></tr>
342<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
343<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_constant_layer.xhtml">ConstantLayer</a></td></tr>
344<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer that the constant data can be bound to. <a href="classarmnn_1_1_constant_layer.xhtml#details">More...</a><br /></td></tr>
345<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
346<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_constant_queue_descriptor.xhtml">ConstantQueueDescriptor</a></td></tr>
347<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
348<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a></td></tr>
349<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
350<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_passthrough_cpu_tensor_handle.xhtml">ConstPassthroughCpuTensorHandle</a></td></tr>
351<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
352<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_construct_in_place.xhtml">ConstructInPlace</a></td></tr>
353<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disambiguation tag that can be passed to the constructor to indicate that the contained object should be constructed in-place. <a href="structarmnn_1_1_construct_in_place.xhtml#details">More...</a><br /></td></tr>
354<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
355<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a></td></tr>
356<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> (shape and data type) and an immutable backing store. <a href="classarmnn_1_1_const_tensor.xhtml#details">More...</a><br /></td></tr>
357<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
358<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a></td></tr>
359<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 16 to Float 32. <a href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml#details">More...</a><br /></td></tr>
360<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
361<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp16_to_fp32_queue_descriptor.xhtml">ConvertFp16ToFp32QueueDescriptor</a></td></tr>
362<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
363<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a></td></tr>
364<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer converts data type Float 32 to Float 16. <a href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml#details">More...</a><br /></td></tr>
365<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
366<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convert_fp32_to_fp16_queue_descriptor.xhtml">ConvertFp32ToFp16QueueDescriptor</a></td></tr>
367<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
368<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a></td></tr>
369<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml" title="A Convolution2dDescriptor for the Convolution2dLayer. ">Convolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_convolution2d_layer.xhtml" title="This layer represents a convolution 2d operation. ">Convolution2dLayer</a>. <a href="structarmnn_1_1_convolution2d_descriptor.xhtml#details">More...</a><br /></td></tr>
370<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
371<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_convolution2d_layer.xhtml">Convolution2dLayer</a></td></tr>
372<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a convolution 2d operation. <a href="classarmnn_1_1_convolution2d_layer.xhtml#details">More...</a><br /></td></tr>
373<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
374<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_convolution2d_queue_descriptor.xhtml">Convolution2dQueueDescriptor</a></td></tr>
375<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
376<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_copy_mem_generic_workload.xhtml">CopyMemGenericWorkload</a></td></tr>
377<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
378<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_cpu_tensor_handle.xhtml">CpuTensorHandle</a></td></tr>
379<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
380<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a></td></tr>
381<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer visualizes the data flowing through the network. <a href="classarmnn_1_1_debug_layer.xhtml#details">More...</a><br /></td></tr>
382<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
383<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_debug_queue_descriptor.xhtml">DebugQueueDescriptor</a></td></tr>
384<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
385<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a></td></tr>
386<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
387<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml">DepthToSpaceLayer</a></td></tr>
388<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a DepthToSpace operation. <a href="classarmnn_1_1_depth_to_space_layer.xhtml#details">More...</a><br /></td></tr>
389<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
390<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depth_to_space_queue_descriptor.xhtml">DepthToSpaceQueueDescriptor</a></td></tr>
391<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
392<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a></td></tr>
393<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml" title="A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer. ">DepthwiseConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml" title="This layer represents a depthwise convolution 2d operation. ">DepthwiseConvolution2dLayer</a>. <a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#details">More...</a><br /></td></tr>
394<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
395<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">DepthwiseConvolution2dLayer</a></td></tr>
396<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a depthwise convolution 2d operation. <a href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml#details">More...</a><br /></td></tr>
397<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
398<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_depthwise_convolution2d_queue_descriptor.xhtml">DepthwiseConvolution2dQueueDescriptor</a></td></tr>
399<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
400<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dequantize_layer.xhtml">DequantizeLayer</a></td></tr>
401<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_dequantize_layer.xhtml#details">More...</a><br /></td></tr>
402<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
403<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_dequantize_queue_descriptor.xhtml">DequantizeQueueDescriptor</a></td></tr>
404<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
405<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a></td></tr>
406<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
407<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_detection_post_process_layer.xhtml">DetectionPostProcessLayer</a></td></tr>
408<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a detection postprocess operator. <a href="classarmnn_1_1_detection_post_process_layer.xhtml#details">More...</a><br /></td></tr>
409<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
410<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_detection_post_process_queue_descriptor.xhtml">DetectionPostProcessQueueDescriptor</a></td></tr>
411<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
412<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_device_spec.xhtml">DeviceSpec</a></td></tr>
413<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
414<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_division_layer.xhtml">DivisionLayer</a></td></tr>
415<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a division operation. <a href="classarmnn_1_1_division_layer.xhtml#details">More...</a><br /></td></tr>
416<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
417<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_division_queue_descriptor.xhtml">DivisionQueueDescriptor</a></td></tr>
418<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
419<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_attribute_set.xhtml">DotAttributeSet</a></td></tr>
420<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
421<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_base.xhtml">DotBase</a></td></tr>
422<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
423<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_defaults.xhtml">DotDefaults</a></td></tr>
424<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
425<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_edge.xhtml">DotEdge</a></td></tr>
426<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
427<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_graph.xhtml">DotGraph</a></td></tr>
428<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
429<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dot_node.xhtml">DotNode</a></td></tr>
430<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
431<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend.xhtml">DynamicBackend</a></td></tr>
432<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
433<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_backend_utils.xhtml">DynamicBackendUtils</a></td></tr>
434<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
435<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_dynamic_quantization_visitor.xhtml">DynamicQuantizationVisitor</a></td></tr>
436<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_dynamic_quantization_visitor.xhtml#details">More...</a><br /></td></tr>
437<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
438<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_base_layer.xhtml">ElementwiseBaseLayer</a></td></tr>
439<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">NOTE: this is an abstract class to encapsulate the element wise operations, it does not implement: std::unique_ptr&lt;IWorkload&gt; <a class="el" href="classarmnn_1_1_layer.xhtml#a08d1e10a45f15cd0bd02557be35a3864">Layer::CreateWorkload(const IWorkloadFactory&amp; factory) const </a>= 0; Layer* <a class="el" href="classarmnn_1_1_layer.xhtml#ae89ff455503aa106d00bf34103d2f2e0" title="Creates a dynamically-allocated copy of this layer. ">Clone(Graph&amp; graph) const </a>= 0;. <a href="classarmnn_1_1_elementwise_base_layer.xhtml#details">More...</a><br /></td></tr>
440<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
441<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_binary_function.xhtml">ElementwiseBinaryFunction</a></td></tr>
442<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
443<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml">ElementwiseUnaryDescriptor</a></td></tr>
444<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_elementwise_unary_descriptor.xhtml" title="A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer. ">ElementwiseUnaryDescriptor</a> for the <a class="el" href="classarmnn_1_1_elementwise_unary_layer.xhtml" title="This layer represents a elementwiseUnary operation. ">ElementwiseUnaryLayer</a>. <a href="structarmnn_1_1_elementwise_unary_descriptor.xhtml#details">More...</a><br /></td></tr>
445<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
446<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_function.xhtml">ElementwiseUnaryFunction</a></td></tr>
447<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
448<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_elementwise_unary_layer.xhtml">ElementwiseUnaryLayer</a></td></tr>
449<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a elementwiseUnary operation. <a href="classarmnn_1_1_elementwise_unary_layer.xhtml#details">More...</a><br /></td></tr>
450<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
451<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_elementwise_unary_queue_descriptor.xhtml">ElementwiseUnaryQueueDescriptor</a></td></tr>
452<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
453<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a></td></tr>
454<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structarmnn_1_1_empty_optional.xhtml" title="EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...">EmptyOptional</a> is used to initialize the <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a> class in case we want to have default value for an <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a> in a function declaration. <a href="structarmnn_1_1_empty_optional.xhtml#details">More...</a><br /></td></tr>
455<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
456<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a></td></tr>
457<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
458<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_equal_queue_descriptor.xhtml">EqualQueueDescriptor</a></td></tr>
459<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
460<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_erased_layer_names_observable.xhtml">ErasedLayerNamesObservable</a></td></tr>
461<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
462<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_event.xhtml">Event</a></td></tr>
463<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_event.xhtml" title="Event class records measurements reported by BeginEvent()/EndEvent() and returns measurements when Ev...">Event</a> class records measurements reported by BeginEvent()/EndEvent() and returns measurements when <a class="el" href="classarmnn_1_1_event.xhtml#aa75e3a38ab9fee7b2ad5522e746ad0af" title="Get the recorded measurements calculated between Start() and Stop() ">Event::GetMeasurements()</a> is called. <a href="classarmnn_1_1_event.xhtml#details">More...</a><br /></td></tr>
464<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
465<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_exception.xhtml">Exception</a></td></tr>
466<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for all ArmNN exceptions so that users can filter to just those. <a href="classarmnn_1_1_exception.xhtml#details">More...</a><br /></td></tr>
467<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
468<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_execution_frame.xhtml">ExecutionFrame</a></td></tr>
469<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
470<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1exp.xhtml">exp</a></td></tr>
471<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
472<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_descriptor.xhtml">FakeQuantizationDescriptor</a></td></tr>
473<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.xhtml" title="A FakeQuantizationDescriptor for the FakeQuantizationLayer. ">FakeQuantizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_fake_quantization_layer.xhtml" title="This layer represents a fake quantization operation. ">FakeQuantizationLayer</a>. <a href="structarmnn_1_1_fake_quantization_descriptor.xhtml#details">More...</a><br /></td></tr>
474<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
475<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fake_quantization_layer.xhtml">FakeQuantizationLayer</a></td></tr>
476<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fake quantization operation. <a href="classarmnn_1_1_fake_quantization_layer.xhtml#details">More...</a><br /></td></tr>
477<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
478<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fake_quantization_queue_descriptor.xhtml">FakeQuantizationQueueDescriptor</a></td></tr>
479<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
480<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_file_not_found_exception.xhtml">FileNotFoundException</a></td></tr>
481<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
482<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_first_input_typed_workload.xhtml">FirstInputTypedWorkload</a></td></tr>
483<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
484<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_decoder.xhtml">Float16Decoder</a></td></tr>
485<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
486<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float16_encoder.xhtml">Float16Encoder</a></td></tr>
487<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
488<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_decoder.xhtml">Float32Decoder</a></td></tr>
489<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
490<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_float32_encoder.xhtml">Float32Encoder</a></td></tr>
491<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
492<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_floor_layer.xhtml">FloorLayer</a></td></tr>
493<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a floor operation. <a href="classarmnn_1_1_floor_layer.xhtml#details">More...</a><br /></td></tr>
494<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
495<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_floor_queue_descriptor.xhtml">FloorQueueDescriptor</a></td></tr>
496<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
497<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a></td></tr>
498<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml" title="A FullyConnectedDescriptor for the FullyConnectedLayer. ">FullyConnectedDescriptor</a> for the <a class="el" href="classarmnn_1_1_fully_connected_layer.xhtml" title="This layer represents a fully connected operation. ">FullyConnectedLayer</a>. <a href="structarmnn_1_1_fully_connected_descriptor.xhtml#details">More...</a><br /></td></tr>
499<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
500<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_fully_connected_layer.xhtml">FullyConnectedLayer</a></td></tr>
501<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a fully connected operation. <a href="classarmnn_1_1_fully_connected_layer.xhtml#details">More...</a><br /></td></tr>
502<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
503<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_fully_connected_queue_descriptor.xhtml">FullyConnectedQueueDescriptor</a></td></tr>
504<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
505<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_gather_layer.xhtml">GatherLayer</a></td></tr>
506<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a Gather operator. <a href="classarmnn_1_1_gather_layer.xhtml#details">More...</a><br /></td></tr>
507<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
508<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_gather_queue_descriptor.xhtml">GatherQueueDescriptor</a></td></tr>
509<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
510<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a></td></tr>
511<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
512<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_observable.xhtml">GraphObservable</a></td></tr>
513<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
514<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_graph_validation_exception.xhtml">GraphValidationException</a></td></tr>
515<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
516<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_greater_queue_descriptor.xhtml">GreaterQueueDescriptor</a></td></tr>
517<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
518<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_bold.xhtml">HtmlBold</a></td></tr>
519<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
520<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_font.xhtml">HtmlFont</a></td></tr>
521<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
522<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_section.xhtml">HtmlSection</a></td></tr>
523<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
524<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_html_simple_tag.xhtml">HtmlSimpleTag</a></td></tr>
525<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
526<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_acl_tensor_handle.xhtml">IAclTensorHandle</a></td></tr>
527<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
528<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a></td></tr>
529<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Each backend should implement an <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a>. <a href="classarmnn_1_1_i_backend.xhtml#details">More...</a><br /></td></tr>
530<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
531<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_context.xhtml">IBackendContext</a></td></tr>
532<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
533<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a></td></tr>
534<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
535<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_cl_tensor_handle.xhtml">IClTensorHandle</a></td></tr>
536<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
537<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a></td></tr>
538<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface for a layer that is connectable to other layers via InputSlots and OutputSlots. <a href="classarmnn_1_1_i_connectable_layer.xhtml#details">More...</a><br /></td></tr>
539<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
540<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a></td></tr>
541<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Device specific knowledge to be passed to the optimizer. <a href="classarmnn_1_1_i_device_spec.xhtml#details">More...</a><br /></td></tr>
542<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
543<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_execution_frame.xhtml">IExecutionFrame</a></td></tr>
544<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_execution_frame.xhtml">ExecutionFrame</a> interface to enqueue a workload computation. <a href="classarmnn_1_1_i_execution_frame.xhtml#details">More...</a><br /></td></tr>
545<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
546<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">IGpuAccTunedParameters</a></td></tr>
547<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages a set of GpuAcc parameters which have been tuned for maximum performance. <a href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml#details">More...</a><br /></td></tr>
548<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
549<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_graph_observable.xhtml">IGraphObservable</a></td></tr>
550<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
551<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_input_slot.xhtml">IInputSlot</a></td></tr>
552<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An input connection slot for a layer. <a href="classarmnn_1_1_i_input_slot.xhtml#details">More...</a><br /></td></tr>
553<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
554<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a></td></tr>
555<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
556<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a></td></tr>
557<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
558<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_memory_manager.xhtml">IMemoryManager</a></td></tr>
559<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
560<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_import_mem_generic_workload.xhtml">ImportMemGenericWorkload</a></td></tr>
561<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
562<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a></td></tr>
563<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main network class which provides the interface for building up a neural network. <a href="classarmnn_1_1_i_network.xhtml#details">More...</a><br /></td></tr>
564<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
565<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_network_properties.xhtml">INetworkProperties</a></td></tr>
566<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
567<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_network_quantizer.xhtml">INetworkQuantizer</a></td></tr>
568<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Quantizer class Quantizes a float32 InputNetwork. <a href="classarmnn_1_1_i_network_quantizer.xhtml#details">More...</a><br /></td></tr>
569<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
570<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_layer.xhtml">InputLayer</a></td></tr>
571<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_input_layer.xhtml#details">More...</a><br /></td></tr>
572<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
573<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_input_slot.xhtml">InputSlot</a></td></tr>
574<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
575<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a></td></tr>
576<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml" title="An InstanceNormalizationDescriptor for InstanceNormalizationLayer. ">InstanceNormalizationDescriptor</a> for <a class="el" href="classarmnn_1_1_instance_normalization_layer.xhtml" title="This layer represents an instance normalization operation. ">InstanceNormalizationLayer</a>. <a href="structarmnn_1_1_instance_normalization_descriptor.xhtml#details">More...</a><br /></td></tr>
577<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
578<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instance_normalization_layer.xhtml">InstanceNormalizationLayer</a></td></tr>
579<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an instance normalization operation. <a href="classarmnn_1_1_instance_normalization_layer.xhtml#details">More...</a><br /></td></tr>
580<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
581<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.xhtml">InstanceNormalizationQueueDescriptor</a></td></tr>
582<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
583<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_instrument.xhtml">Instrument</a></td></tr>
584<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
585<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_decoder.xhtml">Int32Decoder</a></td></tr>
586<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
587<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_int32_encoder.xhtml">Int32Encoder</a></td></tr>
588<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
589<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a></td></tr>
590<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
591<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a></td></tr>
592<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
593<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_output_slot.xhtml">IOutputSlot</a></td></tr>
594<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An output connection slot for a layer. <a href="classarmnn_1_1_i_output_slot.xhtml#details">More...</a><br /></td></tr>
595<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
596<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_profiler.xhtml">IProfiler</a></td></tr>
597<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
598<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_i_quantization_scheme.xhtml">IQuantizationScheme</a></td></tr>
599<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
600<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a></td></tr>
601<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
602<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_half_type.xhtml">IsHalfType</a></td></tr>
603<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
604<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source.xhtml">IsMemorySource</a></td></tr>
605<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
606<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_is_memory_source_3_01_memory_source_01_4.xhtml">IsMemorySource&lt; MemorySource &gt;</a></td></tr>
607<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
608<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_subgraph_view_converter.xhtml">ISubgraphViewConverter</a></td></tr>
609<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
610<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a></td></tr>
611<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
612<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml">ITensorHandleFactory</a></td></tr>
613<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
614<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload.xhtml">IWorkload</a></td></tr>
615<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Workload interface to enqueue a layer computation. <a href="classarmnn_1_1_i_workload.xhtml#details">More...</a><br /></td></tr>
616<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
617<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_i_workload_factory.xhtml">IWorkloadFactory</a></td></tr>
618<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
619<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_json_child_object.xhtml">JsonChildObject</a></td></tr>
620<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
621<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_json_printer.xhtml">JsonPrinter</a></td></tr>
622<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
623<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a></td></tr>
624<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml" title="A L2NormalizationDescriptor for the L2NormalizationLayer. ">L2NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_l2_normalization_layer.xhtml" title="This layer represents a L2 normalization operation. ">L2NormalizationLayer</a>. <a href="structarmnn_1_1_l2_normalization_descriptor.xhtml#details">More...</a><br /></td></tr>
625<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
626<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_l2_normalization_layer.xhtml">L2NormalizationLayer</a></td></tr>
627<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a L2 normalization operation. <a href="classarmnn_1_1_l2_normalization_layer.xhtml#details">More...</a><br /></td></tr>
628<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
629<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_l2_normalization_queue_descriptor.xhtml">L2NormalizationQueueDescriptor</a></td></tr>
630<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
631<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a></td></tr>
632<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
633<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_support_base.xhtml">LayerSupportBase</a></td></tr>
634<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
635<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl.xhtml">LayerTypeOfImpl</a></td></tr>
636<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
637<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_activation_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Activation &gt;</a></td></tr>
638<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
639<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_addition_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Addition &gt;</a></td></tr>
640<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
641<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_arg_min_max_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::ArgMinMax &gt;</a></td></tr>
642<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
643<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_normalization_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::BatchNormalization &gt;</a></td></tr>
644<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
645<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_batch_to_space_nd_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::BatchToSpaceNd &gt;</a></td></tr>
646<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
647<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_comparison_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Comparison &gt;</a></td></tr>
648<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
649<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_concat_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Concat &gt;</a></td></tr>
650<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
651<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_constant_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Constant &gt;</a></td></tr>
652<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
653<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp16_to_fp32_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::ConvertFp16ToFp32 &gt;</a></td></tr>
654<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
655<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convert_fp32_to_fp16_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::ConvertFp32ToFp16 &gt;</a></td></tr>
656<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
657<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_convolution2d_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Convolution2d &gt;</a></td></tr>
658<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
659<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_debug_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Debug &gt;</a></td></tr>
660<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
661<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depth_to_space_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::DepthToSpace &gt;</a></td></tr>
662<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
663<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_depthwise_convolution2d_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::DepthwiseConvolution2d &gt;</a></td></tr>
664<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
665<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_dequantize_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Dequantize &gt;</a></td></tr>
666<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
667<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_detection_post_process_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::DetectionPostProcess &gt;</a></td></tr>
668<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
669<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_division_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Division &gt;</a></td></tr>
670<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
671<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_elementwise_unary_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::ElementwiseUnary &gt;</a></td></tr>
672<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
673<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fake_quantization_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::FakeQuantization &gt;</a></td></tr>
674<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
675<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_floor_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Floor &gt;</a></td></tr>
676<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
677<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_fully_connected_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::FullyConnected &gt;</a></td></tr>
678<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
679<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_gather_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Gather &gt;</a></td></tr>
680<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
681<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_input_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Input &gt;</a></td></tr>
682<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
683<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_instance_normalization_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::InstanceNormalization &gt;</a></td></tr>
684<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
685<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_l2_normalization_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::L2Normalization &gt;</a></td></tr>
686<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
687<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_log_softmax_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::LogSoftmax &gt;</a></td></tr>
688<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
689<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_lstm_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Lstm &gt;</a></td></tr>
690<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
691<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_maximum_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Maximum &gt;</a></td></tr>
692<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
693<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mean_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Mean &gt;</a></td></tr>
694<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
695<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_copy_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::MemCopy &gt;</a></td></tr>
696<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
697<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_mem_import_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::MemImport &gt;</a></td></tr>
698<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
699<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_merge_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Merge &gt;</a></td></tr>
700<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
701<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_minimum_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Minimum &gt;</a></td></tr>
702<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
703<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_multiplication_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Multiplication &gt;</a></td></tr>
704<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
705<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_normalization_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Normalization &gt;</a></td></tr>
706<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
707<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_output_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Output &gt;</a></td></tr>
708<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
709<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pad_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Pad &gt;</a></td></tr>
710<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
711<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_permute_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Permute &gt;</a></td></tr>
712<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
713<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pooling2d_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Pooling2d &gt;</a></td></tr>
714<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
715<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_pre_compiled_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::PreCompiled &gt;</a></td></tr>
716<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
717<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_prelu_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Prelu &gt;</a></td></tr>
718<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
719<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantize_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Quantize &gt;</a></td></tr>
720<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
721<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_quantized_lstm_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::QuantizedLstm &gt;</a></td></tr>
722<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
723<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_reshape_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Reshape &gt;</a></td></tr>
724<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
725<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_resize_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Resize &gt;</a></td></tr>
726<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
727<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_slice_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Slice &gt;</a></td></tr>
728<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
729<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_softmax_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Softmax &gt;</a></td></tr>
730<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
731<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_batch_nd_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::SpaceToBatchNd &gt;</a></td></tr>
732<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
733<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_space_to_depth_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::SpaceToDepth &gt;</a></td></tr>
734<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
735<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_splitter_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Splitter &gt;</a></td></tr>
736<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
737<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stack_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Stack &gt;</a></td></tr>
738<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
739<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_stand_in_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::StandIn &gt;</a></td></tr>
740<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
741<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_strided_slice_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::StridedSlice &gt;</a></td></tr>
742<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
743<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_subtraction_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Subtraction &gt;</a></td></tr>
744<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
745<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_switch_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Switch &gt;</a></td></tr>
746<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
747<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_transpose_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::Transpose &gt;</a></td></tr>
748<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
749<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_layer_type_of_impl_3_01_layer_type_1_1_transpose_convolution2d_01_4.xhtml">LayerTypeOfImpl&lt; LayerType::TransposeConvolution2d &gt;</a></td></tr>
750<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
751<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_validation_exception.xhtml">LayerValidationException</a></td></tr>
752<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
753<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_visitor_base.xhtml">LayerVisitorBase</a></td></tr>
754<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor base class with empty implementations. <a href="classarmnn_1_1_layer_visitor_base.xhtml#details">More...</a><br /></td></tr>
755<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
756<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_layer_with_parameters.xhtml">LayerWithParameters</a></td></tr>
757<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
758<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_loaded_network.xhtml">LoadedNetwork</a></td></tr>
759<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
760<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_sink.xhtml">LogSink</a></td></tr>
761<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
762<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml">LogSoftmaxLayer</a></td></tr>
763<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a log softmax operation. <a href="classarmnn_1_1_log_softmax_layer.xhtml#details">More...</a><br /></td></tr>
764<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
765<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_log_softmax_queue_descriptor.xhtml">LogSoftmaxQueueDescriptor</a></td></tr>
766<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
767<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_basic_parameters.xhtml">LstmBasicParameters</a></td></tr>
768<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
769<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a></td></tr>
770<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml" title="An LstmDescriptor for the LstmLayer. ">LstmDescriptor</a> for the <a class="el" href="classarmnn_1_1_lstm_layer.xhtml" title="This layer represents a LSTM operation. ">LstmLayer</a>. <a href="structarmnn_1_1_lstm_descriptor.xhtml#details">More...</a><br /></td></tr>
771<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
772<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params.xhtml">LstmInputParams</a></td></tr>
773<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
774<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a></td></tr>
775<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
776<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_lstm_layer.xhtml">LstmLayer</a></td></tr>
777<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a LSTM operation. <a href="classarmnn_1_1_lstm_layer.xhtml#details">More...</a><br /></td></tr>
778<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
779<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_cifg_parameters.xhtml">LstmOptCifgParameters</a></td></tr>
780<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
781<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_layer_norm_parameters.xhtml">LstmOptLayerNormParameters</a></td></tr>
782<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
783<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_peephole_parameters.xhtml">LstmOptPeepholeParameters</a></td></tr>
784<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
785<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_opt_projection_parameters.xhtml">LstmOptProjectionParameters</a></td></tr>
786<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
787<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_lstm_queue_descriptor.xhtml">LstmQueueDescriptor</a></td></tr>
788<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
789<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1maximum.xhtml">maximum</a></td></tr>
790<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
791<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_maximum_layer.xhtml">MaximumLayer</a></td></tr>
792<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a maximum operation. <a href="classarmnn_1_1_maximum_layer.xhtml#details">More...</a><br /></td></tr>
793<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
794<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_maximum_queue_descriptor.xhtml">MaximumQueueDescriptor</a></td></tr>
795<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
796<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a></td></tr>
797<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml" title="A MeanDescriptor for the MeanLayer. ">MeanDescriptor</a> for the <a class="el" href="classarmnn_1_1_mean_layer.xhtml" title="This layer represents a mean operation. ">MeanLayer</a>. <a href="structarmnn_1_1_mean_descriptor.xhtml#details">More...</a><br /></td></tr>
798<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
799<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mean_layer.xhtml">MeanLayer</a></td></tr>
800<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a mean operation. <a href="classarmnn_1_1_mean_layer.xhtml#details">More...</a><br /></td></tr>
801<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
802<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mean_queue_descriptor.xhtml">MeanQueueDescriptor</a></td></tr>
803<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
804<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a></td></tr>
805<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
806<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_copy_layer.xhtml">MemCopyLayer</a></td></tr>
807<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory copy operation. <a href="classarmnn_1_1_mem_copy_layer.xhtml#details">More...</a><br /></td></tr>
808<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
809<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a></td></tr>
810<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
811<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mem_import_layer.xhtml">MemImportLayer</a></td></tr>
812<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a memory import operation. <a href="classarmnn_1_1_mem_import_layer.xhtml#details">More...</a><br /></td></tr>
813<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
814<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_import_queue_descriptor.xhtml">MemImportQueueDescriptor</a></td></tr>
815<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
816<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_export_exception.xhtml">MemoryExportException</a></td></tr>
817<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
818<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_memory_import_exception.xhtml">MemoryImportException</a></td></tr>
819<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
820<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_mem_sync_queue_descriptor.xhtml">MemSyncQueueDescriptor</a></td></tr>
821<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
822<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_merge_layer.xhtml">MergeLayer</a></td></tr>
823<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer dequantizes the input tensor. <a href="classarmnn_1_1_merge_layer.xhtml#details">More...</a><br /></td></tr>
824<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
825<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_merge_queue_descriptor.xhtml">MergeQueueDescriptor</a></td></tr>
826<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
827<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1minimum.xhtml">minimum</a></td></tr>
828<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
829<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_minimum_layer.xhtml">MinimumLayer</a></td></tr>
830<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a minimum operation. <a href="classarmnn_1_1_minimum_layer.xhtml#details">More...</a><br /></td></tr>
831<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
832<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_minimum_queue_descriptor.xhtml">MinimumQueueDescriptor</a></td></tr>
833<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
834<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend.xhtml">MockBackend</a></td></tr>
835<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
836<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_initialiser.xhtml">MockBackendInitialiser</a></td></tr>
837<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
838<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_context.xhtml">MockBackendProfilingContext</a></td></tr>
839<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
840<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_backend_profiling_service.xhtml">MockBackendProfilingService</a></td></tr>
841<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
842<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_mock_layer_support.xhtml">MockLayerSupport</a></td></tr>
843<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
844<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multiplication_layer.xhtml">MultiplicationLayer</a></td></tr>
845<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a multiplication operation. <a href="classarmnn_1_1_multiplication_layer.xhtml#details">More...</a><br /></td></tr>
846<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
847<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.xhtml">MultiplicationQueueDescriptor</a></td></tr>
848<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
849<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a></td></tr>
850<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
851<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_abs_workload.xhtml">NeonAbsWorkload</a></td></tr>
852<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
853<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_activation_workload.xhtml">NeonActivationWorkload</a></td></tr>
854<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
855<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_addition_workload.xhtml">NeonAdditionWorkload</a></td></tr>
856<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
857<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_arg_min_max_workload.xhtml">NeonArgMinMaxWorkload</a></td></tr>
858<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
859<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_backend.xhtml">NeonBackend</a></td></tr>
860<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
861<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_normalization_workload.xhtml">NeonBatchNormalizationWorkload</a></td></tr>
862<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
863<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_batch_to_space_nd_workload.xhtml">NeonBatchToSpaceNdWorkload</a></td></tr>
864<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
865<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_concat_workload.xhtml">NeonConcatWorkload</a></td></tr>
866<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
867<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_constant_workload.xhtml">NeonConstantWorkload</a></td></tr>
868<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
869<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp16_to_fp32_workload.xhtml">NeonConvertFp16ToFp32Workload</a></td></tr>
870<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
871<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convert_fp32_to_fp16_workload.xhtml">NeonConvertFp32ToFp16Workload</a></td></tr>
872<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
873<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_convolution2d_workload.xhtml">NeonConvolution2dWorkload</a></td></tr>
874<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
875<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depth_to_space_workload.xhtml">NeonDepthToSpaceWorkload</a></td></tr>
876<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
877<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_depthwise_convolution_workload.xhtml">NeonDepthwiseConvolutionWorkload</a></td></tr>
878<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
879<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_dequantize_workload.xhtml">NeonDequantizeWorkload</a></td></tr>
880<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
881<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_detection_post_process_workload.xhtml">NeonDetectionPostProcessWorkload</a></td></tr>
882<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
883<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_division_workload.xhtml">NeonDivisionWorkload</a></td></tr>
884<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
885<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_floor_float_workload.xhtml">NeonFloorFloatWorkload</a></td></tr>
886<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
887<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_fully_connected_workload.xhtml">NeonFullyConnectedWorkload</a></td></tr>
888<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
889<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_greater_workload.xhtml">NeonGreaterWorkload</a></td></tr>
890<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
891<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_instance_normalization_workload.xhtml">NeonInstanceNormalizationWorkload</a></td></tr>
892<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
893<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_interceptor_scheduler.xhtml">NeonInterceptorScheduler</a></td></tr>
894<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
895<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_l2_normalization_float_workload.xhtml">NeonL2NormalizationFloatWorkload</a></td></tr>
896<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
897<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_layer_support.xhtml">NeonLayerSupport</a></td></tr>
898<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
899<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_lstm_float_workload.xhtml">NeonLstmFloatWorkload</a></td></tr>
900<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
901<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_maximum_workload.xhtml">NeonMaximumWorkload</a></td></tr>
902<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
903<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_mean_workload.xhtml">NeonMeanWorkload</a></td></tr>
904<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
905<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_memory_manager.xhtml">NeonMemoryManager</a></td></tr>
906<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
907<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_minimum_workload.xhtml">NeonMinimumWorkload</a></td></tr>
908<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
909<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_multiplication_workload.xhtml">NeonMultiplicationWorkload</a></td></tr>
910<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
911<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_normalization_float_workload.xhtml">NeonNormalizationFloatWorkload</a></td></tr>
912<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
913<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pad_workload.xhtml">NeonPadWorkload</a></td></tr>
914<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
915<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_permute_workload.xhtml">NeonPermuteWorkload</a></td></tr>
916<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
917<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_pooling2d_workload.xhtml">NeonPooling2dWorkload</a></td></tr>
918<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
919<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_prelu_workload.xhtml">NeonPreluWorkload</a></td></tr>
920<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
921<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantized_lstm_workload.xhtml">NeonQuantizedLstmWorkload</a></td></tr>
922<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
923<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_quantize_workload.xhtml">NeonQuantizeWorkload</a></td></tr>
924<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
925<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_reshape_workload.xhtml">NeonReshapeWorkload</a></td></tr>
926<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
927<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_resize_workload.xhtml">NeonResizeWorkload</a></td></tr>
928<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
929<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_rsqrt_workload.xhtml">NeonRsqrtWorkload</a></td></tr>
930<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
931<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_slice_workload.xhtml">NeonSliceWorkload</a></td></tr>
932<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
933<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_float_workload.xhtml">NeonSoftmaxFloatWorkload</a></td></tr>
934<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
935<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_softmax_uint8_workload.xhtml">NeonSoftmaxUint8Workload</a></td></tr>
936<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
937<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_batch_nd_workload.xhtml">NeonSpaceToBatchNdWorkload</a></td></tr>
938<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
939<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_space_to_depth_workload.xhtml">NeonSpaceToDepthWorkload</a></td></tr>
940<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
941<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_splitter_workload.xhtml">NeonSplitterWorkload</a></td></tr>
942<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
943<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_stack_workload.xhtml">NeonStackWorkload</a></td></tr>
944<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
945<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_strided_slice_workload.xhtml">NeonStridedSliceWorkload</a></td></tr>
946<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
947<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_sub_tensor_handle.xhtml">NeonSubTensorHandle</a></td></tr>
948<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
949<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_subtraction_workload.xhtml">NeonSubtractionWorkload</a></td></tr>
950<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
951<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle.xhtml">NeonTensorHandle</a></td></tr>
952<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
953<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_tensor_handle_factory.xhtml">NeonTensorHandleFactory</a></td></tr>
954<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
955<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_timer.xhtml">NeonTimer</a></td></tr>
956<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
957<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_transpose_convolution2d_workload.xhtml">NeonTransposeConvolution2dWorkload</a></td></tr>
958<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
959<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_transpose_workload.xhtml">NeonTransposeWorkload</a></td></tr>
960<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
961<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_neon_workload_factory.xhtml">NeonWorkloadFactory</a></td></tr>
962<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
963<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network.xhtml">Network</a></td></tr>
964<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Private implementation of <a class="el" href="classarmnn_1_1_i_network.xhtml" title="Main network class which provides the interface for building up a neural network. ...">INetwork</a>. <a href="classarmnn_1_1_network.xhtml#details">More...</a><br /></td></tr>
965<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
966<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_network_quantizer.xhtml">NetworkQuantizer</a></td></tr>
967<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
968<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_node_content.xhtml">NodeContent</a></td></tr>
969<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
970<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a></td></tr>
971<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml" title="A NormalizationDescriptor for the NormalizationLayer. ">NormalizationDescriptor</a> for the <a class="el" href="classarmnn_1_1_normalization_layer.xhtml" title="This layer represents a normalization operation. ">NormalizationLayer</a>. <a href="structarmnn_1_1_normalization_descriptor.xhtml#details">More...</a><br /></td></tr>
972<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
973<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_normalization_layer.xhtml">NormalizationLayer</a></td></tr>
974<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a normalization operation. <a href="classarmnn_1_1_normalization_layer.xhtml#details">More...</a><br /></td></tr>
975<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
976<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_normalization_queue_descriptor.xhtml">NormalizationQueueDescriptor</a></td></tr>
977<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
978<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_null_workload.xhtml">NullWorkload</a></td></tr>
979<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
980<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_open_cl_timer.xhtml">OpenClTimer</a></td></tr>
981<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_open_cl_timer.xhtml" title="OpenClTimer instrument that times all OpenCl kernels executed between calls to Start() and Stop()...">OpenClTimer</a> instrument that times all OpenCl kernels executed between calls to <a class="el" href="classarmnn_1_1_open_cl_timer.xhtml#a156f3866ca69d98b4d9e6e1c1b3ec7da" title="Start the OpenCl timer. ">Start()</a> and <a class="el" href="classarmnn_1_1_open_cl_timer.xhtml#a634c58de2126b4a4e6a2a093e60e1290" title="Stop the OpenCl timer. ">Stop()</a>. <a href="classarmnn_1_1_open_cl_timer.xhtml#details">More...</a><br /></td></tr>
982<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
983<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization.xhtml">Optimization</a></td></tr>
984<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
985<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a></td></tr>
986<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
987<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimization_views.xhtml">OptimizationViews</a></td></tr>
988<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
989<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a></td></tr>
990<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
991<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection.xhtml">OptimizeForConnection</a></td></tr>
992<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
993<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_connection_impl.xhtml">OptimizeForConnectionImpl</a></td></tr>
994<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper <a class="el" href="classarmnn_1_1_optimization.xhtml">Optimization</a> class that calls Wrapped::Run for every connection BaseType -&gt; ChildType. <a href="classarmnn_1_1_optimize_for_connection_impl.xhtml#details">More...</a><br /></td></tr>
995<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
996<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type.xhtml">OptimizeForType</a></td></tr>
997<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
998<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl.xhtml">OptimizeForTypeImpl</a></td></tr>
999<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapper <a class="el" href="classarmnn_1_1_optimization.xhtml">Optimization</a> base class that calls Wrapped::Run() for every layer of type BaseType. <a href="classarmnn_1_1_optimize_for_type_impl.xhtml#details">More...</a><br /></td></tr>
1000<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1001<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.xhtml">OptimizeForTypeImpl&lt; Layer, Wrapped &gt;</a></td></tr>
1002<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specialization that calls Wrapped::Run() for any layer type. <a href="classarmnn_1_1_optimize_for_type_impl_3_01_layer_00_01_wrapped_01_4.xhtml#details">More...</a><br /></td></tr>
1003<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1004<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optimizer.xhtml">Optimizer</a></td></tr>
1005<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1006<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a></td></tr>
1007<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1008<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a></td></tr>
1009<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1010<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_base.xhtml">OptionalBase</a></td></tr>
1011<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classarmnn_1_1_optional_base.xhtml" title="OptionalBase is the common functionality between reference and non-reference optional types...">OptionalBase</a> is the common functionality between reference and non-reference optional types. <a href="classarmnn_1_1_optional_base.xhtml#details">More...</a><br /></td></tr>
1012<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1013<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch.xhtml">OptionalReferenceSwitch</a></td></tr>
1014<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The default implementation is the non-reference case. <a href="classarmnn_1_1_optional_reference_switch.xhtml#details">More...</a><br /></td></tr>
1015<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1016<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_optional_reference_switch_3_01true_00_01_t_01_4.xhtml">OptionalReferenceSwitch&lt; true, T &gt;</a></td></tr>
1017<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the special case for reference types. <a href="classarmnn_1_1_optional_reference_switch_3_01true_00_01_t_01_4.xhtml#details">More...</a><br /></td></tr>
1018<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1019<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a></td></tr>
1020<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">An <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml" title="An OriginsDescriptor for the ConcatLayer. ">OriginsDescriptor</a> for the <a class="el" href="classarmnn_1_1_concat_layer.xhtml" title="This layer represents a merge operation. ">ConcatLayer</a>. <a href="structarmnn_1_1_origins_descriptor.xhtml#details">More...</a><br /></td></tr>
1021<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1022<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_handler.xhtml">OutputHandler</a></td></tr>
1023<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1024<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_layer.xhtml">OutputLayer</a></td></tr>
1025<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A layer user-provided data can be bound to (e.g. inputs, outputs). <a href="classarmnn_1_1_output_layer.xhtml#details">More...</a><br /></td></tr>
1026<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1027<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a></td></tr>
1028<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1029<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_override_input_range_visitor.xhtml">OverrideInputRangeVisitor</a></td></tr>
1030<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for overriding the input range of the quantized input layers in a network. <a href="classarmnn_1_1_override_input_range_visitor.xhtml#details">More...</a><br /></td></tr>
1031<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1032<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a></td></tr>
1033<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml" title="A PadDescriptor for the PadLayer. ">PadDescriptor</a> for the <a class="el" href="classarmnn_1_1_pad_layer.xhtml" title="This layer represents a pad operation. ">PadLayer</a>. <a href="structarmnn_1_1_pad_descriptor.xhtml#details">More...</a><br /></td></tr>
1034<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1035<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pad_layer.xhtml">PadLayer</a></td></tr>
1036<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pad operation. <a href="classarmnn_1_1_pad_layer.xhtml#details">More...</a><br /></td></tr>
1037<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1038<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pad_queue_descriptor.xhtml">PadQueueDescriptor</a></td></tr>
1039<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1040<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_parse_exception.xhtml">ParseException</a></td></tr>
1041<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1042<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_passthrough_cpu_tensor_handle.xhtml">PassthroughCpuTensorHandle</a></td></tr>
1043<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1044<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_per_axis_iterator.xhtml">PerAxisIterator</a></td></tr>
1045<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1046<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a></td></tr>
1047<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1048<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a></td></tr>
1049<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml" title="A PermuteDescriptor for the PermuteLayer. ">PermuteDescriptor</a> for the <a class="el" href="classarmnn_1_1_permute_layer.xhtml" title="This layer represents a permutation operation. ">PermuteLayer</a>. <a href="structarmnn_1_1_permute_descriptor.xhtml#details">More...</a><br /></td></tr>
1050<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1051<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_permute_layer.xhtml">PermuteLayer</a></td></tr>
1052<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a permutation operation. <a href="classarmnn_1_1_permute_layer.xhtml#details">More...</a><br /></td></tr>
1053<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1054<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_permute_queue_descriptor.xhtml">PermuteQueueDescriptor</a></td></tr>
1055<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1056<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_polymorphic_downcast_exception.xhtml">PolymorphicDowncastException</a></td></tr>
1057<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1058<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a></td></tr>
1059<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml" title="A Pooling2dDescriptor for the Pooling2dLayer. ">Pooling2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_pooling2d_layer.xhtml" title="This layer represents a pooling 2d operation. ">Pooling2dLayer</a>. <a href="structarmnn_1_1_pooling2d_descriptor.xhtml#details">More...</a><br /></td></tr>
1060<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1061<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pooling2d_layer.xhtml">Pooling2dLayer</a></td></tr>
1062<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a pooling 2d operation. <a href="classarmnn_1_1_pooling2d_layer.xhtml#details">More...</a><br /></td></tr>
1063<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1064<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pooling2d_queue_descriptor.xhtml">Pooling2dQueueDescriptor</a></td></tr>
1065<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1066<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_descriptor.xhtml">PreCompiledDescriptor</a></td></tr>
1067<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_pre_compiled_descriptor.xhtml" title="A PreCompiledDescriptor for the PreCompiledLayer. ">PreCompiledDescriptor</a> for the <a class="el" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a>. <a href="structarmnn_1_1_pre_compiled_descriptor.xhtml#details">More...</a><br /></td></tr>
1068<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1069<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a></td></tr>
1070<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1071<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_pre_compiled_queue_descriptor.xhtml">PreCompiledQueueDescriptor</a></td></tr>
1072<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1073<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_prelu_layer.xhtml">PreluLayer</a></td></tr>
1074<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1075<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_prelu_queue_descriptor.xhtml">PreluQueueDescriptor</a></td></tr>
1076<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1077<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler.xhtml">Profiler</a></td></tr>
1078<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1079<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_profiler_manager.xhtml">ProfilerManager</a></td></tr>
1080<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1081<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_decoder.xhtml">QASymm8Decoder</a></td></tr>
1082<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1083<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm8_encoder.xhtml">QASymm8Encoder</a></td></tr>
1084<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1085<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_decoder.xhtml">QASymmS8Decoder</a></td></tr>
1086<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1087<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_a_symm_s8_encoder.xhtml">QASymmS8Encoder</a></td></tr>
1088<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1089<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_s8_quantization_scheme.xhtml">QAsymmS8QuantizationScheme</a></td></tr>
1090<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1091<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_asymm_u8_quantization_scheme.xhtml">QAsymmU8QuantizationScheme</a></td></tr>
1092<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1093<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_decoder.xhtml">QSymm16Decoder</a></td></tr>
1094<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1095<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm16_encoder.xhtml">QSymm16Encoder</a></td></tr>
1096<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1097<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm16_quantization_scheme.xhtml">QSymm16QuantizationScheme</a></td></tr>
1098<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1099<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_decoder.xhtml">QSymm8PerAxisDecoder</a></td></tr>
1100<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1101<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm8_per_axis_encoder.xhtml">QSymm8PerAxisEncoder</a></td></tr>
1102<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1103<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_decoder.xhtml">QSymmS8Decoder</a></td></tr>
1104<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1105<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_q_symm_s8_encoder.xhtml">QSymmS8Encoder</a></td></tr>
1106<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1107<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_q_symm_s8_quantization_scheme.xhtml">QSymmS8QuantizationScheme</a></td></tr>
1108<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1109<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantization_parameters_are_equal.xhtml">QuantizationParametersAreEqual</a></td></tr>
1110<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1111<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params.xhtml">QuantizedLstmInputParams</a></td></tr>
1112<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1113<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a></td></tr>
1114<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1115<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantized_lstm_layer.xhtml">QuantizedLstmLayer</a></td></tr>
1116<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a QuantizedLstm operation. <a href="classarmnn_1_1_quantized_lstm_layer.xhtml#details">More...</a><br /></td></tr>
1117<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1118<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_parameters.xhtml">QuantizedLstmParameters</a></td></tr>
1119<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1120<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_lstm_queue_descriptor.xhtml">QuantizedLstmQueueDescriptor</a></td></tr>
1121<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1122<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantized_multiplier_smaller_than_one.xhtml">QuantizedMultiplierSmallerThanOne</a></td></tr>
1123<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs multiplication of an integer with a multiplier which is less than one, using quantized integer arithmetic which is consistent with AndroidNN's CPU executor. <a href="structarmnn_1_1_quantized_multiplier_smaller_than_one.xhtml#details">More...</a><br /></td></tr>
1124<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1125<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantize_layer.xhtml">QuantizeLayer</a></td></tr>
1126<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1127<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantize_queue_descriptor.xhtml">QuantizeQueueDescriptor</a></td></tr>
1128<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1129<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_quantizer_options.xhtml">QuantizerOptions</a></td></tr>
1130<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1131<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_quantizer_visitor.xhtml">QuantizerVisitor</a></td></tr>
1132<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor object for quantizing layers in a network. <a href="classarmnn_1_1_quantizer_visitor.xhtml#details">More...</a><br /></td></tr>
1133<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1134<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a></td></tr>
1135<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1136<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_queue_descriptor_with_parameters.xhtml">QueueDescriptorWithParameters</a></td></tr>
1137<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1138<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_range_tracker.xhtml">RangeTracker</a></td></tr>
1139<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1140<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_activation_workload.xhtml">RefActivationWorkload</a></td></tr>
1141<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1142<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_arg_min_max_workload.xhtml">RefArgMinMaxWorkload</a></td></tr>
1143<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1144<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_backend.xhtml">RefBackend</a></td></tr>
1145<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1146<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_normalization_workload.xhtml">RefBatchNormalizationWorkload</a></td></tr>
1147<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1148<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_batch_to_space_nd_workload.xhtml">RefBatchToSpaceNdWorkload</a></td></tr>
1149<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1150<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_comparison_workload.xhtml">RefComparisonWorkload</a></td></tr>
1151<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1152<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_concat_workload.xhtml">RefConcatWorkload</a></td></tr>
1153<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1154<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_constant_workload.xhtml">RefConstantWorkload</a></td></tr>
1155<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1156<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp16_to_fp32_workload.xhtml">RefConvertFp16ToFp32Workload</a></td></tr>
1157<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1158<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convert_fp32_to_fp16_workload.xhtml">RefConvertFp32ToFp16Workload</a></td></tr>
1159<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1160<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_convolution2d_workload.xhtml">RefConvolution2dWorkload</a></td></tr>
1161<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1162<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a></td></tr>
1163<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1164<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depth_to_space_workload.xhtml">RefDepthToSpaceWorkload</a></td></tr>
1165<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1166<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_depthwise_convolution2d_workload.xhtml">RefDepthwiseConvolution2dWorkload</a></td></tr>
1167<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1168<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_dequantize_workload.xhtml">RefDequantizeWorkload</a></td></tr>
1169<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1170<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_detection_post_process_workload.xhtml">RefDetectionPostProcessWorkload</a></td></tr>
1171<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1172<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_unary_workload.xhtml">RefElementwiseUnaryWorkload</a></td></tr>
1173<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1174<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a></td></tr>
1175<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1176<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fake_quantization_float32_workload.xhtml">RefFakeQuantizationFloat32Workload</a></td></tr>
1177<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1178<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_floor_workload.xhtml">RefFloorWorkload</a></td></tr>
1179<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1180<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_fully_connected_workload.xhtml">RefFullyConnectedWorkload</a></td></tr>
1181<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1182<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_gather_workload.xhtml">RefGatherWorkload</a></td></tr>
1183<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1184<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_instance_normalization_workload.xhtml">RefInstanceNormalizationWorkload</a></td></tr>
1185<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1186<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_l2_normalization_workload.xhtml">RefL2NormalizationWorkload</a></td></tr>
1187<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1188<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_layer_support.xhtml">RefLayerSupport</a></td></tr>
1189<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1190<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_log_softmax_workload.xhtml">RefLogSoftmaxWorkload</a></td></tr>
1191<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1192<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_lstm_workload.xhtml">RefLstmWorkload</a></td></tr>
1193<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1194<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_mean_workload.xhtml">RefMeanWorkload</a></td></tr>
1195<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1196<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_memory_manager.xhtml">RefMemoryManager</a></td></tr>
1197<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1198<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_normalization_workload.xhtml">RefNormalizationWorkload</a></td></tr>
1199<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1200<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a></td></tr>
1201<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1202<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a></td></tr>
1203<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1204<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_pooling2d_workload.xhtml">RefPooling2dWorkload</a></td></tr>
1205<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1206<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_prelu_workload.xhtml">RefPreluWorkload</a></td></tr>
1207<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1208<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_quantize_workload.xhtml">RefQuantizeWorkload</a></td></tr>
1209<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1210<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_reshape_workload.xhtml">RefReshapeWorkload</a></td></tr>
1211<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1212<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_bilinear_workload.xhtml">RefResizeBilinearWorkload</a></td></tr>
1213<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1214<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_resize_workload.xhtml">RefResizeWorkload</a></td></tr>
1215<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1216<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_slice_workload.xhtml">RefSliceWorkload</a></td></tr>
1217<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1218<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_softmax_workload.xhtml">RefSoftmaxWorkload</a></td></tr>
1219<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1220<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_batch_nd_workload.xhtml">RefSpaceToBatchNdWorkload</a></td></tr>
1221<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1222<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_space_to_depth_workload.xhtml">RefSpaceToDepthWorkload</a></td></tr>
1223<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1224<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_splitter_workload.xhtml">RefSplitterWorkload</a></td></tr>
1225<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1226<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_stack_workload.xhtml">RefStackWorkload</a></td></tr>
1227<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1228<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_strided_slice_workload.xhtml">RefStridedSliceWorkload</a></td></tr>
1229<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1230<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle.xhtml">RefTensorHandle</a></td></tr>
1231<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1232<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_tensor_handle_factory.xhtml">RefTensorHandleFactory</a></td></tr>
1233<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1234<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_transpose_convolution2d_workload.xhtml">RefTransposeConvolution2dWorkload</a></td></tr>
1235<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1236<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a></td></tr>
1237<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1238<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_ref_workload_factory.xhtml">RefWorkloadFactory</a></td></tr>
1239<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1240<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a></td></tr>
1241<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml" title="A ReshapeDescriptor for the ReshapeLayer. ">ReshapeDescriptor</a> for the <a class="el" href="classarmnn_1_1_reshape_layer.xhtml" title="This layer represents a reshape operation. ">ReshapeLayer</a>. <a href="structarmnn_1_1_reshape_descriptor.xhtml#details">More...</a><br /></td></tr>
1242<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1243<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_reshape_layer.xhtml">ReshapeLayer</a></td></tr>
1244<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a reshape operation. <a href="classarmnn_1_1_reshape_layer.xhtml#details">More...</a><br /></td></tr>
1245<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1246<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_reshape_queue_descriptor.xhtml">ReshapeQueueDescriptor</a></td></tr>
1247<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1248<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml">ResizeBilinearDescriptor</a></td></tr>
1249<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_bilinear_descriptor.xhtml" title="A ResizeBilinearDescriptor for the ResizeBilinearLayer. ">ResizeBilinearDescriptor</a> for the ResizeBilinearLayer. <a href="structarmnn_1_1_resize_bilinear_descriptor.xhtml#details">More...</a><br /></td></tr>
1250<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1251<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_bilinear_queue_descriptor.xhtml">ResizeBilinearQueueDescriptor</a></td></tr>
1252<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1253<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a></td></tr>
1254<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml" title="A ResizeDescriptor for the ResizeLayer. ">ResizeDescriptor</a> for the <a class="el" href="classarmnn_1_1_resize_layer.xhtml" title="This layer represents a resize operation. ">ResizeLayer</a>. <a href="structarmnn_1_1_resize_descriptor.xhtml#details">More...</a><br /></td></tr>
1255<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1256<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a></td></tr>
1257<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a resize operation. <a href="classarmnn_1_1_resize_layer.xhtml#details">More...</a><br /></td></tr>
1258<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1259<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resize_queue_descriptor.xhtml">ResizeQueueDescriptor</a></td></tr>
1260<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1261<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl.xhtml">ResolveTypeImpl</a></td></tr>
1262<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1263<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_b_float16_01_4.xhtml">ResolveTypeImpl&lt; DataType::BFloat16 &gt;</a></td></tr>
1264<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1265<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_boolean_01_4.xhtml">ResolveTypeImpl&lt; DataType::Boolean &gt;</a></td></tr>
1266<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1267<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float16_01_4.xhtml">ResolveTypeImpl&lt; DataType::Float16 &gt;</a></td></tr>
1268<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1269<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_float32_01_4.xhtml">ResolveTypeImpl&lt; DataType::Float32 &gt;</a></td></tr>
1270<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1271<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_s8_01_4.xhtml">ResolveTypeImpl&lt; DataType::QAsymmS8 &gt;</a></td></tr>
1272<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1273<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_asymm_u8_01_4.xhtml">ResolveTypeImpl&lt; DataType::QAsymmU8 &gt;</a></td></tr>
1274<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1275<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s16_01_4.xhtml">ResolveTypeImpl&lt; DataType::QSymmS16 &gt;</a></td></tr>
1276<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1277<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_q_symm_s8_01_4.xhtml">ResolveTypeImpl&lt; DataType::QSymmS8 &gt;</a></td></tr>
1278<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1279<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_resolve_type_impl_3_01_data_type_1_1_signed32_01_4.xhtml">ResolveTypeImpl&lt; DataType::Signed32 &gt;</a></td></tr>
1280<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1281<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1rsqrt.xhtml">rsqrt</a></td></tr>
1282<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1283<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_rsqrt_layer.xhtml">RsqrtLayer</a></td></tr>
1284<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1285<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rsqrt_queue_descriptor.xhtml">RsqrtQueueDescriptor</a></td></tr>
1286<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1287<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_rule.xhtml">Rule</a></td></tr>
1288<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1289<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime.xhtml">Runtime</a></td></tr>
1290<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1291<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a></td></tr>
1292<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1293<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_addition_workload.xhtml">SampleDynamicAdditionWorkload</a></td></tr>
1294<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1295<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_layer_support.xhtml">SampleDynamicLayerSupport</a></td></tr>
1296<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1297<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_dynamic_workload_factory.xhtml">SampleDynamicWorkloadFactory</a></td></tr>
1298<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1299<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_memory_manager.xhtml">SampleMemoryManager</a></td></tr>
1300<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1301<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sample_tensor_handle.xhtml">SampleTensorHandle</a></td></tr>
1302<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1303<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_decoder.xhtml">ScaledInt32Decoder</a></td></tr>
1304<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1305<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scaled_int32_per_axis_decoder.xhtml">ScaledInt32PerAxisDecoder</a></td></tr>
1306<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1307<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_cpu_tensor_handle.xhtml">ScopedCpuTensorHandle</a></td></tr>
1308<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1309<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_scoped_profiling_event.xhtml">ScopedProfilingEvent</a></td></tr>
1310<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1311<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_scoped_record.xhtml">ScopedRecord</a></td></tr>
1312<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1313<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_broadcast_compatible.xhtml">ShapesAreBroadcastCompatible</a></td></tr>
1314<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1315<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_rank.xhtml">ShapesAreSameRank</a></td></tr>
1316<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1317<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_shapes_are_same_total_size.xhtml">ShapesAreSameTotalSize</a></td></tr>
1318<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1319<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_simple_logger.xhtml">SimpleLogger</a></td></tr>
1320<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1321<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a></td></tr>
1322<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml" title="A SliceDescriptor for the SliceLayer. ">SliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a>. <a href="structarmnn_1_1_slice_descriptor.xhtml#details">More...</a><br /></td></tr>
1323<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1324<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a></td></tr>
1325<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1326<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_slice_queue_descriptor.xhtml">SliceQueueDescriptor</a></td></tr>
1327<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1328<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a></td></tr>
1329<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml" title="A SoftmaxDescriptor for the SoftmaxLayer. ">SoftmaxDescriptor</a> for the <a class="el" href="classarmnn_1_1_softmax_layer.xhtml" title="This layer represents a softmax operation. ">SoftmaxLayer</a>. <a href="structarmnn_1_1_softmax_descriptor.xhtml#details">More...</a><br /></td></tr>
1330<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1331<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_softmax_layer.xhtml">SoftmaxLayer</a></td></tr>
1332<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a softmax operation. <a href="classarmnn_1_1_softmax_layer.xhtml#details">More...</a><br /></td></tr>
1333<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1334<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_softmax_queue_descriptor.xhtml">SoftmaxQueueDescriptor</a></td></tr>
1335<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1336<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a></td></tr>
1337<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml" title="A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer. ">SpaceToBatchNdDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml" title="This layer represents a SpaceToBatchNd operation. ">SpaceToBatchNdLayer</a>. <a href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#details">More...</a><br /></td></tr>
1338<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1339<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">SpaceToBatchNdLayer</a></td></tr>
1340<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToBatchNd operation. <a href="classarmnn_1_1_space_to_batch_nd_layer.xhtml#details">More...</a><br /></td></tr>
1341<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1342<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_batch_nd_queue_descriptor.xhtml">SpaceToBatchNdQueueDescriptor</a></td></tr>
1343<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1344<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a></td></tr>
1345<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml" title="A SpaceToDepthDescriptor for the SpaceToDepthLayer. ">SpaceToDepthDescriptor</a> for the <a class="el" href="classarmnn_1_1_space_to_depth_layer.xhtml" title="This layer represents a SpaceToDepth operation. ">SpaceToDepthLayer</a>. <a href="structarmnn_1_1_space_to_depth_descriptor.xhtml#details">More...</a><br /></td></tr>
1346<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1347<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_space_to_depth_layer.xhtml">SpaceToDepthLayer</a></td></tr>
1348<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a SpaceToDepth operation. <a href="classarmnn_1_1_space_to_depth_layer.xhtml#details">More...</a><br /></td></tr>
1349<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1350<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_space_to_depth_queue_descriptor.xhtml">SpaceToDepthQueueDescriptor</a></td></tr>
1351<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1352<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_splitter_layer.xhtml">SplitterLayer</a></td></tr>
1353<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a split operation. <a href="classarmnn_1_1_splitter_layer.xhtml#details">More...</a><br /></td></tr>
1354<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1355<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a></td></tr>
1356<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1357<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1sqrt.xhtml">sqrt</a></td></tr>
1358<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1359<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a></td></tr>
1360<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml" title="A StackDescriptor for the StackLayer. ">StackDescriptor</a> for the <a class="el" href="classarmnn_1_1_stack_layer.xhtml" title="This layer represents a stack operation. ">StackLayer</a>. <a href="structarmnn_1_1_stack_descriptor.xhtml#details">More...</a><br /></td></tr>
1361<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1362<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stack_layer.xhtml">StackLayer</a></td></tr>
1363<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a stack operation. <a href="classarmnn_1_1_stack_layer.xhtml#details">More...</a><br /></td></tr>
1364<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1365<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stack_queue_descriptor.xhtml">StackQueueDescriptor</a></td></tr>
1366<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1367<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_standard_output_sink.xhtml">StandardOutputSink</a></td></tr>
1368<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1369<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stand_in_descriptor.xhtml">StandInDescriptor</a></td></tr>
1370<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_stand_in_descriptor.xhtml" title="A StandInDescriptor for the StandIn layer. ">StandInDescriptor</a> for the StandIn layer. <a href="structarmnn_1_1_stand_in_descriptor.xhtml#details">More...</a><br /></td></tr>
1371<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1372<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_stand_in_layer.xhtml">StandInLayer</a></td></tr>
1373<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents an unknown operation in the input graph. <a href="classarmnn_1_1_stand_in_layer.xhtml#details">More...</a><br /></td></tr>
1374<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1375<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_static_range_visitor.xhtml">StaticRangeVisitor</a></td></tr>
1376<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Visitor class to establish min/max ranges based on the type of the layer. <a href="classarmnn_1_1_static_range_visitor.xhtml#details">More...</a><br /></td></tr>
1377<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1378<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a></td></tr>
1379<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml" title="A StridedSliceDescriptor for the StridedSliceLayer. ">StridedSliceDescriptor</a> for the <a class="el" href="classarmnn_1_1_strided_slice_layer.xhtml" title="This layer represents a strided slice operation. ">StridedSliceLayer</a>. <a href="structarmnn_1_1_strided_slice_descriptor.xhtml#details">More...</a><br /></td></tr>
1380<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1381<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_strided_slice_layer.xhtml">StridedSliceLayer</a></td></tr>
1382<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a strided slice operation. <a href="classarmnn_1_1_strided_slice_layer.xhtml#details">More...</a><br /></td></tr>
1383<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1384<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_strided_slice_queue_descriptor.xhtml">StridedSliceQueueDescriptor</a></td></tr>
1385<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1386<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters.xhtml">StringifyLayerParameters</a></td></tr>
1387<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structarmnn_1_1_stringify_layer_parameters.xhtml" title="StringifyLayerParameters allows serializing layer parameters to string. ">StringifyLayerParameters</a> allows serializing layer parameters to string. <a href="structarmnn_1_1_stringify_layer_parameters.xhtml#details">More...</a><br /></td></tr>
1388<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1389<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_activation_descriptor_01_4.xhtml">StringifyLayerParameters&lt; ActivationDescriptor &gt;</a></td></tr>
1390<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1391<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_normalization_descriptor_01_4.xhtml">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;</a></td></tr>
1392<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1393<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_batch_to_space_nd_descriptor_01_4.xhtml">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;</a></td></tr>
1394<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1395<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_convolution2d_descriptor_01_4.xhtml">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;</a></td></tr>
1396<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1397<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_depthwise_convolution2d_descriptor_01_4.xhtml">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;</a></td></tr>
1398<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1399<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_detection_post_process_descriptor_01_4.xhtml">StringifyLayerParameters&lt; DetectionPostProcessDescriptor &gt;</a></td></tr>
1400<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1401<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fake_quantization_descriptor_01_4.xhtml">StringifyLayerParameters&lt; FakeQuantizationDescriptor &gt;</a></td></tr>
1402<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1403<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_fully_connected_descriptor_01_4.xhtml">StringifyLayerParameters&lt; FullyConnectedDescriptor &gt;</a></td></tr>
1404<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1405<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_l2_normalization_descriptor_01_4.xhtml">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;</a></td></tr>
1406<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1407<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_lstm_descriptor_01_4.xhtml">StringifyLayerParameters&lt; LstmDescriptor &gt;</a></td></tr>
1408<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1409<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_mean_descriptor_01_4.xhtml">StringifyLayerParameters&lt; MeanDescriptor &gt;</a></td></tr>
1410<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1411<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_normalization_descriptor_01_4.xhtml">StringifyLayerParameters&lt; NormalizationDescriptor &gt;</a></td></tr>
1412<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1413<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_origins_descriptor_01_4.xhtml">StringifyLayerParameters&lt; OriginsDescriptor &gt;</a></td></tr>
1414<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1415<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pad_descriptor_01_4.xhtml">StringifyLayerParameters&lt; PadDescriptor &gt;</a></td></tr>
1416<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1417<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_permute_descriptor_01_4.xhtml">StringifyLayerParameters&lt; PermuteDescriptor &gt;</a></td></tr>
1418<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1419<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pooling2d_descriptor_01_4.xhtml">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;</a></td></tr>
1420<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1421<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_pre_compiled_descriptor_01_4.xhtml">StringifyLayerParameters&lt; PreCompiledDescriptor &gt;</a></td></tr>
1422<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1423<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_reshape_descriptor_01_4.xhtml">StringifyLayerParameters&lt; ReshapeDescriptor &gt;</a></td></tr>
1424<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1425<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_bilinear_descriptor_01_4.xhtml">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;</a></td></tr>
1426<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1427<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_resize_descriptor_01_4.xhtml">StringifyLayerParameters&lt; ResizeDescriptor &gt;</a></td></tr>
1428<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1429<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_softmax_descriptor_01_4.xhtml">StringifyLayerParameters&lt; SoftmaxDescriptor &gt;</a></td></tr>
1430<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1431<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_batch_nd_descriptor_01_4.xhtml">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;</a></td></tr>
1432<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1433<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_space_to_depth_descriptor_01_4.xhtml">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;</a></td></tr>
1434<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1435<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_stack_descriptor_01_4.xhtml">StringifyLayerParameters&lt; StackDescriptor &gt;</a></td></tr>
1436<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1437<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_strided_slice_descriptor_01_4.xhtml">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;</a></td></tr>
1438<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1439<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_transpose_convolution2d_descriptor_01_4.xhtml">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;</a></td></tr>
1440<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1441<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_transpose_descriptor_01_4.xhtml">StringifyLayerParameters&lt; TransposeDescriptor &gt;</a></td></tr>
1442<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1443<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_stringify_layer_parameters_3_01_views_descriptor_01_4.xhtml">StringifyLayerParameters&lt; ViewsDescriptor &gt;</a></td></tr>
1444<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1445<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_string_mapping.xhtml">StringMapping</a></td></tr>
1446<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structarmnn_1_1_string_mapping.xhtml" title="StringMapping is helper class to be able to use strings as template parameters, so this allows simpli...">StringMapping</a> is helper class to be able to use strings as template parameters, so this allows simplifying code which only differs in a string, such as a debug string literal. <a href="structarmnn_1_1_string_mapping.xhtml#details">More...</a><br /></td></tr>
1447<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1448<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a></td></tr>
1449<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="classarmnn_1_1_subgraph_view.xhtml" title="The SubgraphView class represents a subgraph of a Graph. ">SubgraphView</a> class represents a subgraph of a <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a>. <a href="classarmnn_1_1_subgraph_view.xhtml#details">More...</a><br /></td></tr>
1450<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1451<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subgraph_view_selector.xhtml">SubgraphViewSelector</a></td></tr>
1452<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Algorithm that splits a <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> into Subgraphs based on a filtering of layers (e.g. <a href="classarmnn_1_1_subgraph_view_selector.xhtml#details">More...</a><br /></td></tr>
1453<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1454<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_subtraction_layer.xhtml">SubtractionLayer</a></td></tr>
1455<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a subtraction operation. <a href="classarmnn_1_1_subtraction_layer.xhtml#details">More...</a><br /></td></tr>
1456<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1457<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.xhtml">SubtractionQueueDescriptor</a></td></tr>
1458<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1459<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_switch_layer.xhtml">SwitchLayer</a></td></tr>
1460<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer calculates both true and false outputs for input. <a href="classarmnn_1_1_switch_layer.xhtml#details">More...</a><br /></td></tr>
1461<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1462<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_switch_queue_descriptor.xhtml">SwitchQueueDescriptor</a></td></tr>
1463<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1464<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_sync_mem_generic_workload.xhtml">SyncMemGenericWorkload</a></td></tr>
1465<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1466<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor.xhtml">Tensor</a></td></tr>
1467<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A tensor defined by a <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> (shape and data type) and a mutable backing store. <a href="classarmnn_1_1_tensor.xhtml#details">More...</a><br /></td></tr>
1468<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1469<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_buffer_array_view.xhtml">TensorBufferArrayView</a></td></tr>
1470<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1471<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a></td></tr>
1472<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1473<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a></td></tr>
1474<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1475<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_tensor_num_dimensions_are_correct.xhtml">TensorNumDimensionsAreCorrect</a></td></tr>
1476<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1477<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a></td></tr>
1478<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1479<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_batch_normalization_layer_visitor.xhtml">TestBatchNormalizationLayerVisitor</a></td></tr>
1480<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1481<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_constant_layer_visitor.xhtml">TestConstantLayerVisitor</a></td></tr>
1482<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1483<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_convolution2d_layer_visitor.xhtml">TestConvolution2dLayerVisitor</a></td></tr>
1484<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1485<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_depthwise_convolution2d_layer_visitor.xhtml">TestDepthwiseConvolution2dLayerVisitor</a></td></tr>
1486<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1487<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_fully_connected_layer_vistor.xhtml">TestFullyConnectedLayerVistor</a></td></tr>
1488<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1489<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_input_layer_visitor.xhtml">TestInputLayerVisitor</a></td></tr>
1490<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1491<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_layer_visitor.xhtml">TestLayerVisitor</a></td></tr>
1492<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1493<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_lstm_layer_visitor.xhtml">TestLstmLayerVisitor</a></td></tr>
1494<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1495<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_output_layer_visitor.xhtml">TestOutputLayerVisitor</a></td></tr>
1496<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1497<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_test_quantized_lstm_layer_visitor.xhtml">TestQuantizedLstmLayerVisitor</a></td></tr>
1498<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1499<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_timeout_exception.xhtml">TimeoutException</a></td></tr>
1500<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1501<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a></td></tr>
1502<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml" title="A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer. ">TransposeConvolution2dDescriptor</a> for the <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml" title="This layer represents a 2D transpose convolution operation. ">TransposeConvolution2dLayer</a>. <a href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml#details">More...</a><br /></td></tr>
1503<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1504<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">TransposeConvolution2dLayer</a></td></tr>
1505<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a 2D transpose convolution operation. <a href="classarmnn_1_1_transpose_convolution2d_layer.xhtml#details">More...</a><br /></td></tr>
1506<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1507<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_convolution2d_queue_descriptor.xhtml">TransposeConvolution2dQueueDescriptor</a></td></tr>
1508<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1509<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a></td></tr>
1510<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml" title="A TransposeDescriptor for the TransposeLayer. ">TransposeDescriptor</a> for the <a class="el" href="classarmnn_1_1_transpose_layer.xhtml" title="This layer represents a transpose operation. ">TransposeLayer</a>. <a href="structarmnn_1_1_transpose_descriptor.xhtml#details">More...</a><br /></td></tr>
1511<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1512<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_transpose_layer.xhtml">TransposeLayer</a></td></tr>
1513<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">This layer represents a transpose operation. <a href="classarmnn_1_1_transpose_layer.xhtml#details">More...</a><br /></td></tr>
1514<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1515<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_transpose_queue_descriptor.xhtml">TransposeQueueDescriptor</a></td></tr>
1516<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1517<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_any_of.xhtml">TypeAnyOf</a></td></tr>
1518<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1519<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_iterator.xhtml">TypedIterator</a></td></tr>
1520<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1521<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a></td></tr>
1522<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1523<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_is.xhtml">TypeIs</a></td></tr>
1524<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1525<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_type_not_per_axis_quantized.xhtml">TypeNotPerAxisQuantized</a></td></tr>
1526<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1527<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_types_are_equal.xhtml">TypesAreEqual</a></td></tr>
1528<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1529<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_unimplemented_exception.xhtml">UnimplementedException</a></td></tr>
1530<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1531<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a></td></tr>
1532<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A <a class="el" href="structarmnn_1_1_views_descriptor.xhtml" title="A ViewsDescriptor for the SplitterLayer. ">ViewsDescriptor</a> for the <a class="el" href="classarmnn_1_1_splitter_layer.xhtml" title="This layer represents a split operation. ">SplitterLayer</a>. <a href="structarmnn_1_1_views_descriptor.xhtml#details">More...</a><br /></td></tr>
1533<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1534<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_no_throw_policy.xhtml">VisitorNoThrowPolicy</a></td></tr>
1535<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1536<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_visitor_throwing_policy.xhtml">VisitorThrowingPolicy</a></td></tr>
1537<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1538<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_wall_clock_timer.xhtml">WallClockTimer</a></td></tr>
1539<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1540<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_data_collector.xhtml">WorkloadDataCollector</a></td></tr>
1541<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1542<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarmnn_1_1_workload_factory_base.xhtml">WorkloadFactoryBase</a></td></tr>
1543<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1544<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a></td></tr>
1545<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains information about inputs and outputs to a layer. <a href="structarmnn_1_1_workload_info.xhtml#details">More...</a><br /></td></tr>
1546<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
1547</table><table class="memberdecls">
1548<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
1549Typedefs</h2></td></tr>
1550<tr class="memitem:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt;</td></tr>
1551<tr class="separator:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memSeparator" colspan="2">&#160;</td></tr>
1552<tr class="memitem:a1854d9cda81304325664363c1fd0fb27"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt;</td></tr>
1553<tr class="separator:a1854d9cda81304325664363c1fd0fb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
1554<tr class="memitem:ade0af9dacaa52cafdd701bef2e901c77"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a> &gt;</td></tr>
1555<tr class="separator:ade0af9dacaa52cafdd701bef2e901c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
1556<tr class="memitem:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_dynamic_backend.xhtml">DynamicBackend</a> &gt;</td></tr>
1557<tr class="separator:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memSeparator" colspan="2">&#160;</td></tr>
1558<tr class="memitem:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_context.xhtml">IBackendContext</a> &gt;</td></tr>
1559<tr class="separator:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
1560<tr class="memitem:a12bff6d51d63dac1375c89bc8415dc46"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_memory_manager.xhtml">IMemoryManager</a> &gt;</td></tr>
1561<tr class="separator:a12bff6d51d63dac1375c89bc8415dc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
1562<tr class="memitem:ac14705405cbcdd580df613de6766fe65"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> = <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a></td></tr>
1563<tr class="memdesc:ac14705405cbcdd580df613de6766fe65"><td class="mdescLeft">&#160;</td><td class="mdescRight">A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. <a href="#ac14705405cbcdd580df613de6766fe65">More...</a><br /></td></tr>
1564<tr class="separator:ac14705405cbcdd580df613de6766fe65"><td class="memSeparator" colspan="2">&#160;</td></tr>
1565<tr class="memitem:a3647f60510bc8ddaced01c51b0ee8714"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> = <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a></td></tr>
1566<tr class="memdesc:a3647f60510bc8ddaced01c51b0ee8714"><td class="mdescLeft">&#160;</td><td class="mdescRight">A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. <a href="#a3647f60510bc8ddaced01c51b0ee8714">More...</a><br /></td></tr>
1567<tr class="separator:a3647f60510bc8ddaced01c51b0ee8714"><td class="memSeparator" colspan="2">&#160;</td></tr>
1568<tr class="memitem:a7863c179ff92feec660c48ab7b95ae55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a></td></tr>
1569<tr class="separator:a7863c179ff92feec660c48ab7b95ae55"><td class="memSeparator" colspan="2">&#160;</td></tr>
1570<tr class="memitem:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a></td></tr>
1571<tr class="memdesc:a003d213dd28b0b8c0f26fbf268ccb975"><td class="mdescLeft">&#160;</td><td class="mdescRight">MergerDescriptor is deprecated, use ConcatDescriptor instead. <a href="#a003d213dd28b0b8c0f26fbf268ccb975">More...</a><br /></td></tr>
1572<tr class="separator:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memSeparator" colspan="2">&#160;</td></tr>
1573<tr class="memitem:a60291543fe872b795e71e05bcd835fd1"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a></td></tr>
1574<tr class="separator:a60291543fe872b795e71e05bcd835fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
1575<tr class="memitem:a11fa919c11fe46aad613b2e960fcfe90"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> &gt;</td></tr>
1576<tr class="separator:a11fa919c11fe46aad613b2e960fcfe90"><td class="memSeparator" colspan="2">&#160;</td></tr>
1577<tr class="memitem:ace74f6f9feb95a964a49d79458232703"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *network)&gt;</td></tr>
1578<tr class="separator:ace74f6f9feb95a964a49d79458232703"><td class="memSeparator" colspan="2">&#160;</td></tr>
1579<tr class="memitem:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a> *network)&gt;</td></tr>
1580<tr class="separator:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memSeparator" colspan="2">&#160;</td></tr>
1581<tr class="memitem:a83015160d8c67d5d77735eb0d4033d9a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td></tr>
1582<tr class="separator:a83015160d8c67d5d77735eb0d4033d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1583<tr class="memitem:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a> *runtime)&gt;</td></tr>
1584<tr class="separator:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1585<tr class="memitem:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">IGpuAccTunedParameters</a> &gt;</td></tr>
1586<tr class="memdesc:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The following API is replaced by the backend options API. <a href="#a2d3a708a26ac6d77bf8f15506e89a25a">More...</a><br /></td></tr>
1587<tr class="separator:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1588<tr class="memitem:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td></tr>
1589<tr class="separator:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
1590<tr class="memitem:a280670a263dc4fd40491f6d0a2737f44"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt; <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &gt;</td></tr>
1591<tr class="separator:a280670a263dc4fd40491f6d0a2737f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
1592<tr class="memitem:aa01bce88f89975a5a031db4cc8861527"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &gt; &gt;</td></tr>
1593<tr class="separator:aa01bce88f89975a5a031db4cc8861527"><td class="memSeparator" colspan="2">&#160;</td></tr>
1594<tr class="memitem:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt; std::pair&lt; <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.xhtml">Tensor</a> &gt; &gt;</td></tr>
1595<tr class="separator:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
1596<tr class="memitem:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a> &gt;</td></tr>
1597<tr class="separator:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memSeparator" colspan="2">&#160;</td></tr>
1598<tr class="memitem:a5a665483e56a688e9f8180accdf72d80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a> *backend)&gt;</td></tr>
1599<tr class="separator:a5a665483e56a688e9f8180accdf72d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
1600<tr class="memitem:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td></tr>
1601<tr class="memdesc:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of identifiers for bindable layers (inputs, outputs). <a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">More...</a><br /></td></tr>
1602<tr class="separator:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1603<tr class="memitem:afad4088a9a058114ee5f87246f87bf49"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">profiling::ProfilingGuid</a></td></tr>
1604<tr class="memdesc:afad4088a9a058114ee5f87246f87bf49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define LayerGuid type. <a href="#afad4088a9a058114ee5f87246f87bf49">More...</a><br /></td></tr>
1605<tr class="separator:afad4088a9a058114ee5f87246f87bf49"><td class="memSeparator" colspan="2">&#160;</td></tr>
1606<tr class="memitem:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt; void(<a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *tensorHandle)&gt;</td></tr>
1607<tr class="memdesc:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define the type of callback for the Debug layer to call. <a href="#a15f3ad9b5e4e3d46b0a6dda246a7bc28">More...</a><br /></td></tr>
1608<tr class="separator:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
1609<tr class="memitem:a41119e261eec9343888d2ceab1e4999a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_network_quantizer.xhtml">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.xhtml">INetworkQuantizer</a> *quantizer)&gt;</td></tr>
1610<tr class="separator:a41119e261eec9343888d2ceab1e4999a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1611<tr class="memitem:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_workload.xhtml">IWorkload</a> &gt; &gt;</td></tr>
1612<tr class="separator:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
1613<tr class="memitem:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
1614<tr class="separator:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1615<tr class="memitem:a293695a94110c1a0eb77e29c22dce79a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt; unsigned int, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> &gt;</td></tr>
1616<tr class="separator:a293695a94110c1a0eb77e29c22dce79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1617<tr class="memitem:a689de00cadd81b4e35b7448e4fbbc034"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
1618<tr class="separator:a689de00cadd81b4e35b7448e4fbbc034"><td class="memSeparator" colspan="2">&#160;</td></tr>
1619<tr class="memitem:a7b4ac337ed307e0739e628d5b9883856"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.xhtml#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> &gt;</td></tr>
1620<tr class="separator:a7b4ac337ed307e0739e628d5b9883856"><td class="memSeparator" colspan="2">&#160;</td></tr>
1621<tr class="memitem:a02847c99a2acae3b267615479f93ab55"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.xhtml">ISubgraphViewConverter</a></td></tr>
1622<tr class="separator:a02847c99a2acae3b267615479f93ab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
1623<tr class="memitem:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td></tr>
1624<tr class="separator:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
1625<tr class="memitem:ae73bf7cb78cc552c5511431b0d583f14"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt; void(const void *)&gt;</td></tr>
1626<tr class="separator:ae73bf7cb78cc552c5511431b0d583f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
1627<tr class="memitem:ae3bff3986cb5a50637c9b3238d821f54"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt; void, <a class="el" href="namespacearmnn.xhtml#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> &gt;</td></tr>
1628<tr class="separator:ae3bff3986cb5a50637c9b3238d821f54"><td class="memSeparator" colspan="2">&#160;</td></tr>
1629<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplParams" colspan="2">template&lt;LayerType Type&gt; </td></tr>
1630<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.xhtml">LayerTypeOfImpl</a>&lt; Type &gt;::Type</td></tr>
1631<tr class="separator:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memSeparator" colspan="2">&#160;</td></tr>
1632<tr class="memitem:a9173495a61a0092b5f38b855f02c3585"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>, std::unique_ptr&lt; class <a class="el" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a> &gt; &gt;</td></tr>
1633<tr class="separator:a9173495a61a0092b5f38b855f02c3585"><td class="memSeparator" colspan="2">&#160;</td></tr>
1634<tr class="memitem:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt; float, int &gt;</td></tr>
1635<tr class="separator:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1636<tr class="memitem:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt; std::vector&lt; float &gt;, std::vector&lt; int &gt;, std::vector&lt; unsigned char &gt; &gt;</td></tr>
1637<tr class="separator:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memSeparator" colspan="2">&#160;</td></tr>
1638<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplParams" colspan="2">template&lt;DataType DT&gt; </td></tr>
1639<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.xhtml">ResolveTypeImpl</a>&lt; DT &gt;::Type</td></tr>
1640<tr class="separator:a0743ed5e860c316a20b68ca96301b411"><td class="memSeparator" colspan="2">&#160;</td></tr>
1641<tr class="memitem:a8c42c6647e31ebe525aeba878d133e45"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt; void(const std::string &amp;name, const std::string &amp;value)&gt;</td></tr>
1642<tr class="separator:a8c42c6647e31ebe525aeba878d133e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
1643<tr class="memitem:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a></td></tr>
1644<tr class="separator:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1645<tr class="memitem:a997e96288bdb106c922202e3f33d5d7b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt; float, float &gt;</td></tr>
1646<tr class="separator:a997e96288bdb106c922202e3f33d5d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1647<tr class="memitem:ac757baefa4b72b54c38f713f86418f8a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt; <a class="el" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> &gt;</td></tr>
1648<tr class="separator:ac757baefa4b72b54c38f713f86418f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1649<tr class="memitem:a061aafb62b3769f55369845c3990ec7a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt; <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.xhtml#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> &gt;</td></tr>
1650<tr class="separator:a061aafb62b3769f55369845c3990ec7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1651<tr class="memitem:a0f38fa92b2468d5378258a2b074c1a31"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td></tr>
1652<tr class="separator:a0f38fa92b2468d5378258a2b074c1a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
1653<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1654<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1655<tr class="separator:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memSeparator" colspan="2">&#160;</td></tr>
1656<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1657<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1658<tr class="separator:a0493144f15b35804a133c9aa0b63fcc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1659<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1660<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a> &gt;</td></tr>
1661<tr class="separator:ad4d53881107428c301d43b5aad16bfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1662<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1663<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a> &gt;</td></tr>
1664<tr class="separator:a3e4b88b993c90b274e0bd268c35d798e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1665<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1666<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1667<tr class="separator:ab539ef5a0c152536da71c8fcc065efb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1668<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1669<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1670<tr class="separator:a20d2055c37fedf3f39db9facf2c8c697"><td class="memSeparator" colspan="2">&#160;</td></tr>
1671<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1672<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a> &gt;</td></tr>
1673<tr class="separator:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1674<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1675<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1676<tr class="separator:a827d59b5a779a8089017802172817f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1677<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1678<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a> &gt;</td></tr>
1679<tr class="separator:a6486138451112140f98516c0bee18615"><td class="memSeparator" colspan="2">&#160;</td></tr>
1680<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
1681<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt; <a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a> &gt;</td></tr>
1682<tr class="separator:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
1683<tr class="memitem:a2231ac018fe2c465f2d42fef597d67e7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a></td></tr>
1684<tr class="separator:a2231ac018fe2c465f2d42fef597d67e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1685<tr class="memitem:a37a1a6b381ccc76df203fee023234996"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a></td></tr>
1686<tr class="separator:a37a1a6b381ccc76df203fee023234996"><td class="memSeparator" colspan="2">&#160;</td></tr>
1687<tr class="memitem:a308ba160745ba35e1de8d698d0139eb4"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a></td></tr>
1688<tr class="separator:a308ba160745ba35e1de8d698d0139eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1689<tr class="memitem:a947e07902b1b5d98b57eeae34053146b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">FactoryId</a> = <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a></td></tr>
1690<tr class="separator:a947e07902b1b5d98b57eeae34053146b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1691<tr class="memitem:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.xhtml">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1692<tr class="separator:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
1693<tr class="memitem:a569ba573145851e753623be817b98e9b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.xhtml">ClGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1694<tr class="separator:a569ba573145851e753623be817b98e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1695<tr class="memitem:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.xhtml">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1696<tr class="separator:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
1697<tr class="memitem:a9b0bb8592cd6e6cb693d305825fae448"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.xhtml">NeonGreaterWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1698<tr class="separator:a9b0bb8592cd6e6cb693d305825fae448"><td class="memSeparator" colspan="2">&#160;</td></tr>
1699<tr class="memitem:ab51075960a6cf82a8bb6ee81c9efa97d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab51075960a6cf82a8bb6ee81c9efa97d">RefDebugBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a> &gt;</td></tr>
1700<tr class="separator:ab51075960a6cf82a8bb6ee81c9efa97d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1701<tr class="memitem:ac8d7aa6e66fb59a839833b160f619228"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1702<tr class="separator:ac8d7aa6e66fb59a839833b160f619228"><td class="memSeparator" colspan="2">&#160;</td></tr>
1703<tr class="memitem:ad194629946077375dcce05b2449334c8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1704<tr class="separator:ad194629946077375dcce05b2449334c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1705<tr class="memitem:a0c1df21c99a094d2f078ca90047a73ff"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1706<tr class="separator:a0c1df21c99a094d2f078ca90047a73ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
1707<tr class="memitem:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a> &gt;</td></tr>
1708<tr class="separator:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1709<tr class="memitem:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1710<tr class="separator:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memSeparator" colspan="2">&#160;</td></tr>
1711<tr class="memitem:ad607a96fafba334ba5bde946947dd0af"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a> &gt;</td></tr>
1712<tr class="separator:ad607a96fafba334ba5bde946947dd0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
1713<tr class="memitem:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a> &gt;</td></tr>
1714<tr class="separator:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
1715<tr class="memitem:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; std::plus&lt; float &gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a> &gt;</td></tr>
1716<tr class="separator:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1717<tr class="memitem:a01853f5d02495c04636016c1e3e7c144"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; std::minus&lt; float &gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.xhtml">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a> &gt;</td></tr>
1718<tr class="separator:a01853f5d02495c04636016c1e3e7c144"><td class="memSeparator" colspan="2">&#160;</td></tr>
1719<tr class="memitem:aabff736a576814611f65ce1a14600a17"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; std::multiplies&lt; float &gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.xhtml">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a> &gt;</td></tr>
1720<tr class="separator:aabff736a576814611f65ce1a14600a17"><td class="memSeparator" colspan="2">&#160;</td></tr>
1721<tr class="memitem:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; std::divides&lt; float &gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.xhtml">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a> &gt;</td></tr>
1722<tr class="separator:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
1723<tr class="memitem:a044df856403d0af13189f49bcfb209dd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1maximum.xhtml">armnn::maximum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.xhtml">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a> &gt;</td></tr>
1724<tr class="separator:a044df856403d0af13189f49bcfb209dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
1725<tr class="memitem:aa8c69a3741eafef59e51564511403fb8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt; <a class="el" href="structarmnn_1_1minimum.xhtml">armnn::minimum</a>&lt; float &gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.xhtml">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a> &gt;</td></tr>
1726<tr class="separator:aa8c69a3741eafef59e51564511403fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1727<tr class="memitem:af0b5fb43c9e4ebee9928c3cc619a6c3f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af0b5fb43c9e4ebee9928c3cc619a6c3f">RefPadBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a> &gt;</td></tr>
1728<tr class="separator:af0b5fb43c9e4ebee9928c3cc619a6c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1729<tr class="memitem:aef8145fff0dca42e42786745414fec96"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1730<tr class="separator:aef8145fff0dca42e42786745414fec96"><td class="memSeparator" colspan="2">&#160;</td></tr>
1731<tr class="memitem:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1732<tr class="separator:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
1733<tr class="memitem:abc074517cf18f4e0827faca852df7bd9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1734<tr class="separator:abc074517cf18f4e0827faca852df7bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1735<tr class="memitem:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1736<tr class="separator:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memSeparator" colspan="2">&#160;</td></tr>
1737<tr class="memitem:aed5e6ff8fdf785380ed4c8ca21702da3"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aed5e6ff8fdf785380ed4c8ca21702da3">RefPermuteBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a> &gt;</td></tr>
1738<tr class="separator:aed5e6ff8fdf785380ed4c8ca21702da3"><td class="memSeparator" colspan="2">&#160;</td></tr>
1739<tr class="memitem:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1740<tr class="separator:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1741<tr class="memitem:a54c3f7c7b9909e828a084f68dc78a031"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1742<tr class="separator:a54c3f7c7b9909e828a084f68dc78a031"><td class="memSeparator" colspan="2">&#160;</td></tr>
1743<tr class="memitem:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1744<tr class="separator:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1745<tr class="memitem:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1746<tr class="separator:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
1747<tr class="memitem:a031a365fb37880a7f015dab159877a72"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a031a365fb37880a7f015dab159877a72">RefTransposeBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a> &gt;</td></tr>
1748<tr class="separator:a031a365fb37880a7f015dab159877a72"><td class="memSeparator" colspan="2">&#160;</td></tr>
1749<tr class="memitem:aefcfe4efab61267262d1e02cb8af739d"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aefcfe4efab61267262d1e02cb8af739d">RefTransposeFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a> &gt;</td></tr>
1750<tr class="separator:aefcfe4efab61267262d1e02cb8af739d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1751<tr class="memitem:ad67165b4639bd5e50e5bc4538d226b35"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad67165b4639bd5e50e5bc4538d226b35">RefTransposeFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a> &gt;</td></tr>
1752<tr class="separator:ad67165b4639bd5e50e5bc4538d226b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
1753<tr class="memitem:a1d13693cba12d3e406454b852527fb37"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1d13693cba12d3e406454b852527fb37">RefTransposeQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a> &gt;</td></tr>
1754<tr class="separator:a1d13693cba12d3e406454b852527fb37"><td class="memSeparator" colspan="2">&#160;</td></tr>
1755<tr class="memitem:a4d9e736b0f2d5f6d66ea0a798366935c"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4d9e736b0f2d5f6d66ea0a798366935c">RefTransposeQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a> &gt;</td></tr>
1756<tr class="separator:a4d9e736b0f2d5f6d66ea0a798366935c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1757</table><table class="memberdecls">
1758<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
1759Enumerations</h2></td></tr>
1760<tr class="memitem:ae2f04a162585c0a5222a537efd5456ae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> { <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
1761<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,
1762<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,
1763<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3
1764 }<tr class="memdesc:ae2f04a162585c0a5222a537efd5456ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">The Compute enum is now deprecated and it is now being replaced by BackendId. <a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">More...</a><br /></td></tr>
1765</td></tr>
1766<tr class="separator:ae2f04a162585c0a5222a537efd5456ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
1767<tr class="memitem:aff209afc1dc598da399e3e78617ce016"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> { <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>,
1768<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>,
1769<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>,
1770<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>
1771 }</td></tr>
1772<tr class="separator:aff209afc1dc598da399e3e78617ce016"><td class="memSeparator" colspan="2">&#160;</td></tr>
1773<tr class="memitem:a4dc0adc6737b5944e7671bee71788407"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> { <br />
1774&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,
1775<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,
1776<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,
1777<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,
1778<br />
1779&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,
1780<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a>
1781<br />
1782 }</td></tr>
1783<tr class="separator:a4dc0adc6737b5944e7671bee71788407"><td class="memSeparator" colspan="2">&#160;</td></tr>
1784<tr class="memitem:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> { <a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,
1785<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,
1786<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,
1787<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4
1788 }</td></tr>
1789<tr class="separator:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memSeparator" colspan="2">&#160;</td></tr>
1790<tr class="memitem:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> { <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,
1791<a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1
1792 }<tr class="memdesc:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="mdescLeft">&#160;</td><td class="mdescRight">enumeration <a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">More...</a><br /></td></tr>
1793</td></tr>
1794<tr class="separator:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1795<tr class="memitem:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> { <br />
1796&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,
1797<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,
1798<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,
1799<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,
1800<br />
1801&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,
1802<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,
1803<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> = 6,
1804<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,
1805<br />
1806&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,
1807<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a> = 9,
1808<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> = QAsymmU8,
1809<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> = QSymmS16
1810<br />
1811 }</td></tr>
1812<tr class="separator:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
1813<tr class="memitem:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> { <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,
1814<a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2
1815 }</td></tr>
1816<tr class="separator:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
1817<tr class="memitem:a56297e0f7b215eea46c818cb7528d9ea"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> { <br />
1818&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,
1819<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,
1820<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,
1821<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,
1822<br />
1823&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4,
1824<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,
1825<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,
1826<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,
1827<br />
1828&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,
1829<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9,
1830<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a> = 10,
1831<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a> = 11
1832<br />
1833 }</td></tr>
1834<tr class="separator:a56297e0f7b215eea46c818cb7528d9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
1835<tr class="memitem:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> { <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,
1836<a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1
1837 }</td></tr>
1838<tr class="separator:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memSeparator" colspan="2">&#160;</td></tr>
1839<tr class="memitem:a2d299363c9fc33334c571fa29ca4f58c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> { <br />
1840&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,
1841<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,
1842<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,
1843<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,
1844<br />
1845&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,
1846<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5
1847<br />
1848 }</td></tr>
1849<tr class="separator:a2d299363c9fc33334c571fa29ca4f58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
1850<tr class="memitem:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> { <br />
1851&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,
1852<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,
1853<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,
1854<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,
1855<br />
1856&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4
1857<br />
1858 }</td></tr>
1859<tr class="separator:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
1860<tr class="memitem:a961bbfe1db71a848eff5a1f0ab775718"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> { <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,
1861<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,
1862<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2
1863 }</td></tr>
1864<tr class="separator:a961bbfe1db71a848eff5a1f0ab775718"><td class="memSeparator" colspan="2">&#160;</td></tr>
1865<tr class="memitem:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> { <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,
1866<a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1
1867 }</td></tr>
1868<tr class="separator:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1869<tr class="memitem:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> { <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,
1870<a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1
1871 }<tr class="memdesc:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The padding method modifies the output of pooling layers. <a href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">More...</a><br /></td></tr>
1872</td></tr>
1873<tr class="separator:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
1874<tr class="memitem:abe18a5033f2ab9c0de82c676b48f5437"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> { <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,
1875<a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1
1876 }</td></tr>
1877<tr class="separator:abe18a5033f2ab9c0de82c676b48f5437"><td class="memSeparator" colspan="2">&#160;</td></tr>
1878<tr class="memitem:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> { <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,
1879<a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1
1880 }</td></tr>
1881<tr class="separator:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
1882<tr class="memitem:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> { <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,
1883<a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1
1884 }</td></tr>
1885<tr class="separator:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1886<tr class="memitem:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> { <br />
1887&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,
1888<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
1889<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,
1890<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,
1891<br />
1892&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,
1893<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>
1894<br />
1895 }</td></tr>
1896<tr class="separator:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
1897<tr class="memitem:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a> { <a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,
1898<a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a>
1899 }</td></tr>
1900<tr class="separator:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
1901<tr class="memitem:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> { <br />
1902&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,
1903<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a> = FirstLayer,
1904<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,
1905<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>,
1906<br />
1907&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,
1908<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>,
1909<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,
1910<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,
1911<br />
1912&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,
1913<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,
1914<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,
1915<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,
1916<br />
1917&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
1918<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>,
1919<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,
1920<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>,
1921<br />
1922&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>,
1923<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,
1924<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,
1925<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>,
1926<br />
1927&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,
1928<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>,
1929<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>,
1930<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,
1931<br />
1932&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,
1933<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,
1934<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>,
1935<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,
1936<br />
1937&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,
1938<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>,
1939<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,
1940<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,
1941<br />
1942&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,
1943<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,
1944<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,
1945<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,
1946<br />
1947&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,
1948<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>,
1949<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>,
1950<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>,
1951<br />
1952&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,
1953<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,
1954<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>,
1955<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,
1956<br />
1957&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,
1958<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>,
1959<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>,
1960<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>,
1961<br />
1962&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>,
1963<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>,
1964<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>,
1965<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>,
1966<br />
1967&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,
1968<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>,
1969<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,
1970<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,
1971<br />
1972&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>,
1973<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,
1974<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aaf70b1ac863830a4e1ce6268c8399f54">Transpose</a> = LastLayer
1975<br />
1976 }</td></tr>
1977<tr class="separator:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
1978<tr class="memitem:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a> { <a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,
1979<a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>
1980 }</td></tr>
1981<tr class="separator:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1982<tr class="memitem:a707090747256af276c389e0cf1cb0a9a"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> { <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,
1983<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,
1984<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,
1985<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>
1986 }</td></tr>
1987<tr class="separator:a707090747256af276c389e0cf1cb0a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
1988</table><table class="memberdecls">
1989<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
1990Functions</h2></td></tr>
1991<tr class="memitem:a5974a183710829851dbd98a4a919cd50"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5974a183710829851dbd98a4a919cd50">GetILayerSupportByBackendId</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;backend)</td></tr>
1992<tr class="memdesc:a5974a183710829851dbd98a4a919cd50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> for a backend. <a href="#a5974a183710829851dbd98a4a919cd50">More...</a><br /></td></tr>
1993<tr class="separator:a5974a183710829851dbd98a4a919cd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
1994<tr class="memitem:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a> (<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> compute)</td></tr>
1995<tr class="memdesc:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated function that will be removed together with the Compute enum. <a href="#a6bab17bfd45c2fa4592c431bc25ad10e">More...</a><br /></td></tr>
1996<tr class="separator:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memSeparator" colspan="2">&#160;</td></tr>
1997<tr class="memitem:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5b0313cb554380d6e4dfb24c31f9e605">operator&lt;&lt;</a> (std::ostream &amp;os, const std::vector&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
1998<tr class="memdesc:a5b0313cb554380d6e4dfb24c31f9e605"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated function that will be removed together with the Compute enum. <a href="#a5b0313cb554380d6e4dfb24c31f9e605">More...</a><br /></td></tr>
1999<tr class="separator:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memSeparator" colspan="2">&#160;</td></tr>
2000<tr class="memitem:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a127a59fdf5e6d2fa74f87f9265de958b">operator&lt;&lt;</a> (std::ostream &amp;os, const std::set&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;compute)</td></tr>
2001<tr class="memdesc:a127a59fdf5e6d2fa74f87f9265de958b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated function that will be removed together with the Compute enum. <a href="#a127a59fdf5e6d2fa74f87f9265de958b">More...</a><br /></td></tr>
2002<tr class="separator:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2003<tr class="memitem:a345acf4e0dc087eee3f9688029ee6328"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a345acf4e0dc087eee3f9688029ee6328">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;compute)</td></tr>
2004<tr class="memdesc:a345acf4e0dc087eee3f9688029ee6328"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated function that will be removed together with the Compute enum. <a href="#a345acf4e0dc087eee3f9688029ee6328">More...</a><br /></td></tr>
2005<tr class="separator:a345acf4e0dc087eee3f9688029ee6328"><td class="memSeparator" colspan="2">&#160;</td></tr>
2006<tr class="memitem:afc46634e26857d037ee80bb5a74ef28a"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afc46634e26857d037ee80bb5a74ef28a">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;id)</td></tr>
2007<tr class="separator:afc46634e26857d037ee80bb5a74ef28a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2008<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class TContainer, typename... TContainerTemplateArgs&gt; </td></tr>
2009<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a62a9e8c87b9b9f504726746ba4a000a6">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="namespacearmnn.xhtml#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>, TContainerTemplateArgs... &gt; &amp;ids)</td></tr>
2010<tr class="separator:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2011<tr class="memitem:ac2807505b850738bc8a1991ce669dd47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_backend_registry.xhtml">BackendRegistry</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a> ()</td></tr>
2012<tr class="separator:ac2807505b850738bc8a1991ce669dd47"><td class="memSeparator" colspan="2">&#160;</td></tr>
2013<tr class="memitem:a14de37f4c695ac066f999aa75b7cb136"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a14de37f4c695ac066f999aa75b7cb136">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="structarmnn_1_1_backend_version.xhtml">BackendVersion</a> &amp;backendVersion)</td></tr>
2014<tr class="separator:a14de37f4c695ac066f999aa75b7cb136"><td class="memSeparator" colspan="2">&#160;</td></tr>
2015<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
2016<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2fe587812a8dd3e7d7419cbb84a7f4ff">CreateMergerDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
2017<tr class="separator:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
2018<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
2019<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a> (TensorShapeIt first, TensorShapeIt last, unsigned int concatenationDimension)</td></tr>
2020<tr class="memdesc:a733ae6b70d0bfa43433c3e7606992328"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml" title="An OriginsDescriptor for the ConcatLayer. ">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.xhtml" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. <a href="#a733ae6b70d0bfa43433c3e7606992328">More...</a><br /></td></tr>
2021<tr class="separator:a733ae6b70d0bfa43433c3e7606992328"><td class="memSeparator" colspan="2">&#160;</td></tr>
2022<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
2023<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae4ab3bf0697ad13316a6bcba0a8fade5">ConditionalThrow</a> (bool condition, const std::string &amp;message)</td></tr>
2024<tr class="separator:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2025<tr class="memitem:a6ed414c05eb6d4c89e0e4a475a0479c0"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
2026<tr class="memitem:a6ed414c05eb6d4c89e0e4a475a0479c0"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6ed414c05eb6d4c89e0e4a475a0479c0">ConditionalThrow</a> (bool condition)</td></tr>
2027<tr class="separator:a6ed414c05eb6d4c89e0e4a475a0479c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2028<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType , typename ComparedType &gt; </td></tr>
2029<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae57b7f9e2cb7080bf10b28d1f72b558e">ConditionalThrowIfNotEqual</a> (const std::string &amp;message, const ComparedType &amp;leftHandSide, const ComparedType &amp;rightHandSide)</td></tr>
2030<tr class="memdesc:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="mdescLeft">&#160;</td><td class="mdescRight">ComparedType must support: operator==(const ComparedType&amp;) operator&lt;&lt;(ostream&amp;, const ComparedType&amp;) <a href="#ae57b7f9e2cb7080bf10b28d1f72b558e">More...</a><br /></td></tr>
2031<tr class="separator:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2032<tr class="memitem:a82e98ef05fd67036d1195ba17174d685"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a82e98ef05fd67036d1195ba17174d685">Optimize</a> (const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> &amp;network, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;backendPreferences, const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;deviceSpec, const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>=<a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a>(), <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; messages=<a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>())</td></tr>
2033<tr class="memdesc:a82e98ef05fd67036d1195ba17174d685"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an optimized version of the network. <a href="#a82e98ef05fd67036d1195ba17174d685">More...</a><br /></td></tr>
2034<tr class="separator:a82e98ef05fd67036d1195ba17174d685"><td class="memSeparator" colspan="2">&#160;</td></tr>
2035<tr class="memitem:a58bfb9626d373249745d78b95543116e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2036<tr class="memdesc:a58bfb9626d373249745d78b95543116e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a58bfb9626d373249745d78b95543116e">More...</a><br /></td></tr>
2037<tr class="separator:a58bfb9626d373249745d78b95543116e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2038<tr class="memitem:a1b01771dc5a057d09f8cd82492154a1f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2039<tr class="memdesc:a1b01771dc5a057d09f8cd82492154a1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a1b01771dc5a057d09f8cd82492154a1f">More...</a><br /></td></tr>
2040<tr class="separator:a1b01771dc5a057d09f8cd82492154a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2041<tr class="memitem:a7d18d6613bb865b66b05d4d6e0391934"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2042<tr class="memdesc:a7d18d6613bb865b66b05d4d6e0391934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a7d18d6613bb865b66b05d4d6e0391934">More...</a><br /></td></tr>
2043<tr class="separator:a7d18d6613bb865b66b05d4d6e0391934"><td class="memSeparator" colspan="2">&#160;</td></tr>
2044<tr class="memitem:a2399052d9cbb2b88720b07511a2e362f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2045<tr class="memdesc:a2399052d9cbb2b88720b07511a2e362f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a2399052d9cbb2b88720b07511a2e362f">More...</a><br /></td></tr>
2046<tr class="separator:a2399052d9cbb2b88720b07511a2e362f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2047<tr class="memitem:a757df85e956e425c1a082d35a98ca4a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2048<tr class="memdesc:a757df85e956e425c1a082d35a98ca4a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a757df85e956e425c1a082d35a98ca4a9">More...</a><br /></td></tr>
2049<tr class="separator:a757df85e956e425c1a082d35a98ca4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2050<tr class="memitem:acc76cdec78906a3457a9c2293a453869"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2051<tr class="memdesc:acc76cdec78906a3457a9c2293a453869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#acc76cdec78906a3457a9c2293a453869">More...</a><br /></td></tr>
2052<tr class="separator:acc76cdec78906a3457a9c2293a453869"><td class="memSeparator" colspan="2">&#160;</td></tr>
2053<tr class="memitem:aaa152f86599af5189c9d637fe7ade6d0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2054<tr class="memdesc:aaa152f86599af5189c9d637fe7ade6d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#aaa152f86599af5189c9d637fe7ade6d0">More...</a><br /></td></tr>
2055<tr class="separator:aaa152f86599af5189c9d637fe7ade6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2056<tr class="memitem:a98994026cec1578ceb7aa74c834b00d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2057<tr class="memdesc:a98994026cec1578ceb7aa74c834b00d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a98994026cec1578ceb7aa74c834b00d9">More...</a><br /></td></tr>
2058<tr class="separator:a98994026cec1578ceb7aa74c834b00d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2059<tr class="memitem:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2060<tr class="memdesc:af22d4421773ce95e0f2324fc1a66c0d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#af22d4421773ce95e0f2324fc1a66c0d9">More...</a><br /></td></tr>
2061<tr class="separator:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2062<tr class="memitem:a8b96de58aae24091d0ad761f27360630"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2063<tr class="memdesc:a8b96de58aae24091d0ad761f27360630"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a8b96de58aae24091d0ad761f27360630">More...</a><br /></td></tr>
2064<tr class="separator:a8b96de58aae24091d0ad761f27360630"><td class="memSeparator" colspan="2">&#160;</td></tr>
2065<tr class="memitem:a399d38872500c6ac84ae031673176ef3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2066<tr class="memdesc:a399d38872500c6ac84ae031673176ef3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a399d38872500c6ac84ae031673176ef3">More...</a><br /></td></tr>
2067<tr class="separator:a399d38872500c6ac84ae031673176ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2068<tr class="memitem:ac92dceabfbc1e46fe74f699f733886a8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2069<tr class="memdesc:ac92dceabfbc1e46fe74f699f733886a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#ac92dceabfbc1e46fe74f699f733886a8">More...</a><br /></td></tr>
2070<tr class="separator:ac92dceabfbc1e46fe74f699f733886a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2071<tr class="memitem:a29b4b6b364a31632597970d0bad3d78f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2072<tr class="memdesc:a29b4b6b364a31632597970d0bad3d78f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a29b4b6b364a31632597970d0bad3d78f">More...</a><br /></td></tr>
2073<tr class="separator:a29b4b6b364a31632597970d0bad3d78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2074<tr class="memitem:a0e3cdea6143299b258a9c34b596bad4d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0e3cdea6143299b258a9c34b596bad4d">IsEqualSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2075<tr class="memdesc:a0e3cdea6143299b258a9c34b596bad4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a0e3cdea6143299b258a9c34b596bad4d">More...</a><br /></td></tr>
2076<tr class="separator:a0e3cdea6143299b258a9c34b596bad4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2077<tr class="memitem:afe39427f8974f064b838df5c7f0ebebc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.xhtml">FakeQuantizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2078<tr class="memdesc:afe39427f8974f064b838df5c7f0ebebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#afe39427f8974f064b838df5c7f0ebebc">More...</a><br /></td></tr>
2079<tr class="separator:afe39427f8974f064b838df5c7f0ebebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2080<tr class="memitem:a89e9c52419c572f05bf9737a7a60b267"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2081<tr class="memdesc:a89e9c52419c572f05bf9737a7a60b267"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a89e9c52419c572f05bf9737a7a60b267">More...</a><br /></td></tr>
2082<tr class="separator:a89e9c52419c572f05bf9737a7a60b267"><td class="memSeparator" colspan="2">&#160;</td></tr>
2083<tr class="memitem:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2084<tr class="memdesc:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#aa2f4e75d4a4f61b24de0dfe150952c80">More...</a><br /></td></tr>
2085<tr class="separator:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
2086<tr class="memitem:adffa596b4bdecd54ca460853cd1439e2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adffa596b4bdecd54ca460853cd1439e2">IsGreaterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2087<tr class="memdesc:adffa596b4bdecd54ca460853cd1439e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#adffa596b4bdecd54ca460853cd1439e2">More...</a><br /></td></tr>
2088<tr class="separator:adffa596b4bdecd54ca460853cd1439e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2089<tr class="memitem:a197a353aa963497d29a07796268ea5c1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2090<tr class="memdesc:a197a353aa963497d29a07796268ea5c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a197a353aa963497d29a07796268ea5c1">More...</a><br /></td></tr>
2091<tr class="separator:a197a353aa963497d29a07796268ea5c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2092<tr class="memitem:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2093<tr class="memdesc:a0906736b90464c0eb3ce5a87e05ebeee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a0906736b90464c0eb3ce5a87e05ebeee">More...</a><br /></td></tr>
2094<tr class="separator:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2095<tr class="memitem:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2096<tr class="memdesc:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">More...</a><br /></td></tr>
2097<tr class="separator:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2098<tr class="memitem:a3b85a270baf98ea6b040bd395c2d700a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</td></tr>
2099<tr class="memdesc:a3b85a270baf98ea6b040bd395c2d700a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a3b85a270baf98ea6b040bd395c2d700a">More...</a><br /></td></tr>
2100<tr class="separator:a3b85a270baf98ea6b040bd395c2d700a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2101<tr class="memitem:a0cdc60b4988b2193b97590e35f34a07e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2102<tr class="memdesc:a0cdc60b4988b2193b97590e35f34a07e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a0cdc60b4988b2193b97590e35f34a07e">More...</a><br /></td></tr>
2103<tr class="separator:a0cdc60b4988b2193b97590e35f34a07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2104<tr class="memitem:a87ac712443e46c0deb38ab0eaf637e70"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2105<tr class="memdesc:a87ac712443e46c0deb38ab0eaf637e70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a87ac712443e46c0deb38ab0eaf637e70">More...</a><br /></td></tr>
2106<tr class="separator:a87ac712443e46c0deb38ab0eaf637e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2107<tr class="memitem:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2108<tr class="memdesc:a7f518a73b9f7e41c5584c1f49bca8568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a7f518a73b9f7e41c5584c1f49bca8568">More...</a><br /></td></tr>
2109<tr class="separator:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memSeparator" colspan="2">&#160;</td></tr>
2110<tr class="memitem:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2111<tr class="memdesc:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">More...</a><br /></td></tr>
2112<tr class="separator:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2113<tr class="memitem:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2114<tr class="memdesc:ab99d3d944b80f47bd1be70f63cc60abb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#ab99d3d944b80f47bd1be70f63cc60abb">More...</a><br /></td></tr>
2115<tr class="separator:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2116<tr class="memitem:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2117<tr class="memdesc:a56ff60c2946bf0b7e772007acce0d7ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a56ff60c2946bf0b7e772007acce0d7ec">More...</a><br /></td></tr>
2118<tr class="separator:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2119<tr class="memitem:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2120<tr class="memdesc:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">More...</a><br /></td></tr>
2121<tr class="separator:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2122<tr class="memitem:a701cecec7714cf8bc9dca804f473610d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2123<tr class="memdesc:a701cecec7714cf8bc9dca804f473610d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a701cecec7714cf8bc9dca804f473610d">More...</a><br /></td></tr>
2124<tr class="separator:a701cecec7714cf8bc9dca804f473610d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2125<tr class="memitem:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2126<tr class="memdesc:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a515e8a98d7ef9ecda64a2e1e5298461a">More...</a><br /></td></tr>
2127<tr class="separator:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2128<tr class="memitem:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2129<tr class="memdesc:aa3a1bea3b3cd5611f13c06020dababc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#aa3a1bea3b3cd5611f13c06020dababc4">More...</a><br /></td></tr>
2130<tr class="separator:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2131<tr class="memitem:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3b4773564c3fd8c88e697ffe0afbe10d">IsPreCompiledSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2132<tr class="memdesc:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a3b4773564c3fd8c88e697ffe0afbe10d">More...</a><br /></td></tr>
2133<tr class="separator:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2134<tr class="memitem:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2135<tr class="memdesc:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">More...</a><br /></td></tr>
2136<tr class="separator:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2137<tr class="memitem:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2138<tr class="memdesc:aea548aa1485adbeeb3e393a13bb6bff8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#aea548aa1485adbeeb3e393a13bb6bff8">More...</a><br /></td></tr>
2139<tr class="separator:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2140<tr class="memitem:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2141<tr class="memdesc:a4069381c4737d57fc7fd299a61ad9ca1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a4069381c4737d57fc7fd299a61ad9ca1">More...</a><br /></td></tr>
2142<tr class="separator:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2143<tr class="memitem:af5014cbc003abcf201d4372b0012734c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2144<tr class="memdesc:af5014cbc003abcf201d4372b0012734c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#af5014cbc003abcf201d4372b0012734c">More...</a><br /></td></tr>
2145<tr class="separator:af5014cbc003abcf201d4372b0012734c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2146<tr class="memitem:a936d3f949a334668f839fb0bdd170b72"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a936d3f949a334668f839fb0bdd170b72">IsResizeBilinearSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2147<tr class="memdesc:a936d3f949a334668f839fb0bdd170b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a936d3f949a334668f839fb0bdd170b72">More...</a><br /></td></tr>
2148<tr class="separator:a936d3f949a334668f839fb0bdd170b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
2149<tr class="memitem:a90a1aadb53c7537f225252afd681ff22"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2150<tr class="memdesc:a90a1aadb53c7537f225252afd681ff22"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a90a1aadb53c7537f225252afd681ff22">More...</a><br /></td></tr>
2151<tr class="separator:a90a1aadb53c7537f225252afd681ff22"><td class="memSeparator" colspan="2">&#160;</td></tr>
2152<tr class="memitem:accc42ba9679a474e75b43cdf1efa9422"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#accc42ba9679a474e75b43cdf1efa9422">IsRsqrtSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2153<tr class="memdesc:accc42ba9679a474e75b43cdf1efa9422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#accc42ba9679a474e75b43cdf1efa9422">More...</a><br /></td></tr>
2154<tr class="separator:accc42ba9679a474e75b43cdf1efa9422"><td class="memSeparator" colspan="2">&#160;</td></tr>
2155<tr class="memitem:a477695b3df8c0abd2efcf02051f61065"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2156<tr class="memdesc:a477695b3df8c0abd2efcf02051f61065"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a477695b3df8c0abd2efcf02051f61065">More...</a><br /></td></tr>
2157<tr class="separator:a477695b3df8c0abd2efcf02051f61065"><td class="memSeparator" colspan="2">&#160;</td></tr>
2158<tr class="memitem:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2159<tr class="memdesc:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">More...</a><br /></td></tr>
2160<tr class="separator:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memSeparator" colspan="2">&#160;</td></tr>
2161<tr class="memitem:addffaddb4bdb6ec506fe08debcce9b75"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2162<tr class="memdesc:addffaddb4bdb6ec506fe08debcce9b75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#addffaddb4bdb6ec506fe08debcce9b75">More...</a><br /></td></tr>
2163<tr class="separator:addffaddb4bdb6ec506fe08debcce9b75"><td class="memSeparator" colspan="2">&#160;</td></tr>
2164<tr class="memitem:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2165<tr class="separator:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
2166<tr class="memitem:a6487e532e0cb72a210096185e31e2bd6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6487e532e0cb72a210096185e31e2bd6">IsSplitterSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;outputs, const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2167<tr class="memdesc:a6487e532e0cb72a210096185e31e2bd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a6487e532e0cb72a210096185e31e2bd6">More...</a><br /></td></tr>
2168<tr class="separator:a6487e532e0cb72a210096185e31e2bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2169<tr class="memitem:a10e8442be2b8596afd5770e98b904caa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a10e8442be2b8596afd5770e98b904caa">IsStackSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2170<tr class="memdesc:a10e8442be2b8596afd5770e98b904caa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a10e8442be2b8596afd5770e98b904caa">More...</a><br /></td></tr>
2171<tr class="separator:a10e8442be2b8596afd5770e98b904caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2172<tr class="memitem:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2173<tr class="memdesc:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#aebe3dc6730e1b29aee9c9f33b8f94121">More...</a><br /></td></tr>
2174<tr class="separator:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memSeparator" colspan="2">&#160;</td></tr>
2175<tr class="memitem:afbf752a51fa513e0a54e343be130d962"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2176<tr class="memdesc:afbf752a51fa513e0a54e343be130d962"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#afbf752a51fa513e0a54e343be130d962">More...</a><br /></td></tr>
2177<tr class="separator:afbf752a51fa513e0a54e343be130d962"><td class="memSeparator" colspan="2">&#160;</td></tr>
2178<tr class="memitem:a85fcfea412723413a05f0743c84053aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2179<tr class="memdesc:a85fcfea412723413a05f0743c84053aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#a85fcfea412723413a05f0743c84053aa">More...</a><br /></td></tr>
2180<tr class="separator:a85fcfea412723413a05f0743c84053aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2181<tr class="memitem:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac6cc8e0bd35d229486fe6d844d88e0d4">IsTransposeConvolution2dSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</td></tr>
2182<tr class="memdesc:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. <a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">More...</a><br /></td></tr>
2183<tr class="separator:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2184<tr class="memitem:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a71f2cc06b097cb5c4f0a1f48130a823b">LevelToString</a> (<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
2185<tr class="separator:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2186<tr class="memitem:ac9aad76a34137b6359a867b282ea7cfb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a> (<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> level)</td></tr>
2187<tr class="separator:ac9aad76a34137b6359a867b282ea7cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2188<tr class="memitem:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
2189<tr class="separator:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2190<tr class="memitem:a9cdee30c21f3dd630b4e460527105b74"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9cdee30c21f3dd630b4e460527105b74">ConvertLogSeverity</a> (<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a> severity)</td></tr>
2191<tr class="separator:a9cdee30c21f3dd630b4e460527105b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
2192<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
2193<tr class="memitem:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5d94c2125c725df5b619d16db9d4a8e9">Combine</a> (Arg sourceA, Arg sourceB)</td></tr>
2194<tr class="separator:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2195<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplParams" colspan="2">template&lt;typename Arg , typename ... Args, typename std::enable_if&lt; IsMemorySource&lt; Arg &gt;::value &gt;::type * = nullptr&gt; </td></tr>
2196<tr class="memitem:ae91e1849e95350c8e50912a217999eac"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae91e1849e95350c8e50912a217999eac">Combine</a> (Arg source, Args... rest)</td></tr>
2197<tr class="separator:ae91e1849e95350c8e50912a217999eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
2198<tr class="memitem:a84f86b4de5adf0b164e811c87051a0ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a> (<a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> flags, <a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a> source)</td></tr>
2199<tr class="separator:a84f86b4de5adf0b164e811c87051a0ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2200<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplParams" colspan="2">template&lt;typename T , class... Args&gt; </td></tr>
2201<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a77780137c47f528921f6537447060f05">MakeOptional</a> (Args &amp;&amp;... args)</td></tr>
2202<tr class="memdesc:a77780137c47f528921f6537447060f05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility template that constructs an object of type T in-place and wraps it inside an Optional&lt;T&gt; object. <a href="#a77780137c47f528921f6537447060f05">More...</a><br /></td></tr>
2203<tr class="separator:a77780137c47f528921f6537447060f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
2204<tr class="memitem:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> status)</td></tr>
2205<tr class="separator:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2206<tr class="memitem:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa093207ea7c4e7a9c9abe40d2f57995b">GetActivationFunctionAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> activation)</td></tr>
2207<tr class="separator:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2208<tr class="memitem:a5cda3502382f06a64c3cbeb1829bd850"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5cda3502382f06a64c3cbeb1829bd850">GetArgMinMaxFunctionAsCString</a> (<a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function)</td></tr>
2209<tr class="separator:a5cda3502382f06a64c3cbeb1829bd850"><td class="memSeparator" colspan="2">&#160;</td></tr>
2210<tr class="memitem:aabb76a77e95921785f576bb29b495cd8"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aabb76a77e95921785f576bb29b495cd8">GetComparisonOperationAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a> operation)</td></tr>
2211<tr class="separator:aabb76a77e95921785f576bb29b495cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2212<tr class="memitem:a6dac966f265381903c8ef4f392becced"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6dac966f265381903c8ef4f392becced">GetUnaryOperationAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a> operation)</td></tr>
2213<tr class="separator:a6dac966f265381903c8ef4f392becced"><td class="memSeparator" colspan="2">&#160;</td></tr>
2214<tr class="memitem:a517314c21ac5309b90408da162212f9d"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a517314c21ac5309b90408da162212f9d">GetPoolingAlgorithmAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> pooling)</td></tr>
2215<tr class="separator:a517314c21ac5309b90408da162212f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2216<tr class="memitem:a67d7ce2e14ebd328f423322db88279c3"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a67d7ce2e14ebd328f423322db88279c3">GetOutputShapeRoundingAsCString</a> (<a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
2217<tr class="separator:a67d7ce2e14ebd328f423322db88279c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2218<tr class="memitem:a129bde68152f5892e6abdedcb62aa983"><td class="memItemLeft" align="right" valign="top">constexpr char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a129bde68152f5892e6abdedcb62aa983">GetPaddingMethodAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a> method)</td></tr>
2219<tr class="separator:a129bde68152f5892e6abdedcb62aa983"><td class="memSeparator" colspan="2">&#160;</td></tr>
2220<tr class="memitem:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2221<tr class="separator:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2222<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplParams" colspan="2">template&lt;unsigned N&gt; </td></tr>
2223<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a637fea04314a9870c1dc4355c1bed429">StrEqual</a> (const char *strA, const char(&amp;strB)[N])</td></tr>
2224<tr class="separator:a637fea04314a9870c1dc4355c1bed429"><td class="memSeparator" colspan="2">&#160;</td></tr>
2225<tr class="memitem:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a65645fa03bf8cddfb9d8a9f83beeb6e8">ParseComputeDevice</a> (const char *str)</td></tr>
2226<tr class="memdesc:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated function that will be removed together with the Compute enum. <a href="#a65645fa03bf8cddfb9d8a9f83beeb6e8">More...</a><br /></td></tr>
2227<tr class="separator:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2228<tr class="memitem:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2229<tr class="separator:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2230<tr class="memitem:aeef70b7611ae71e97ab55c75ef72b210"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aeef70b7611ae71e97ab55c75ef72b210">GetDataLayoutName</a> (<a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2231<tr class="separator:aeef70b7611ae71e97ab55c75ef72b210"><td class="memSeparator" colspan="2">&#160;</td></tr>
2232<tr class="memitem:aeadd602e128a2be97161345b48533417"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aeadd602e128a2be97161345b48533417">GetNormalizationAlgorithmChannelAsCString</a> (<a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channel)</td></tr>
2233<tr class="separator:aeadd602e128a2be97161345b48533417"><td class="memSeparator" colspan="2">&#160;</td></tr>
2234<tr class="memitem:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad57460ea53cd0b519a3b3547eaf1db7c">GetNormalizationAlgorithmMethodAsCString</a> (<a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a> method)</td></tr>
2235<tr class="separator:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2236<tr class="memitem:aded981a42027bd3302b9c0f09d988659"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aded981a42027bd3302b9c0f09d988659">GetResizeMethodAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> method)</td></tr>
2237<tr class="separator:aded981a42027bd3302b9c0f09d988659"><td class="memSeparator" colspan="2">&#160;</td></tr>
2238<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2239<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad44c007f21af2d0375e3ef9400a1b275">IsQuantizedType</a> ()</td></tr>
2240<tr class="separator:ad44c007f21af2d0375e3ef9400a1b275"><td class="memSeparator" colspan="2">&#160;</td></tr>
2241<tr class="memitem:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2242<tr class="separator:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memSeparator" colspan="2">&#160;</td></tr>
2243<tr class="memitem:aa172264d7075abf828e0b6894996a561"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa172264d7075abf828e0b6894996a561">IsQuantizedType</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2244<tr class="separator:aa172264d7075abf828e0b6894996a561"><td class="memSeparator" colspan="2">&#160;</td></tr>
2245<tr class="memitem:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aaa5b68f3f5bb73b1d3c85d895547a372">operator&lt;&lt;</a> (std::ostream &amp;os, <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a> stat)</td></tr>
2246<tr class="separator:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memSeparator" colspan="2">&#160;</td></tr>
2247<tr class="memitem:aa6d7532e14af97577c054f96d0cf23b3"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa6d7532e14af97577c054f96d0cf23b3">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;shape)</td></tr>
2248<tr class="separator:aa6d7532e14af97577c054f96d0cf23b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2249<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
2250<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplItemLeft" align="right" valign="top">QuantizedType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a> (float value, float scale, int32_t offset)</td></tr>
2251<tr class="memdesc:ad773a034fb9983e15f3094b4c5c7c30c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Quantize a floating point data type into an 8-bit data type. <a href="#ad773a034fb9983e15f3094b4c5c7c30c">More...</a><br /></td></tr>
2252<tr class="separator:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2253<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
2254<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplItemLeft" align="right" valign="top">float&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a> (QuantizedType value, float scale, int32_t offset)</td></tr>
2255<tr class="memdesc:a855293b1be0581fb61ef6a1c5b027d0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dequantize an 8-bit data type into a floating point data type. <a href="#a855293b1be0581fb61ef6a1c5b027d0f">More...</a><br /></td></tr>
2256<tr class="separator:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2257<tr class="memitem:a9667bea652e3a5ef81fea59b71513ced"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9667bea652e3a5ef81fea59b71513ced">VerifyTensorInfoDataType</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;info, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> dataType)</td></tr>
2258<tr class="separator:a9667bea652e3a5ef81fea59b71513ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
2259<tr class="memitem:a44affeeb090c3c6a3062830562672e84"><td class="memTemplParams" colspan="2">template&lt;typename ... Ts&gt; </td></tr>
2260<tr class="memitem:a44affeeb090c3c6a3062830562672e84"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a> (Ts &amp;&amp;...)</td></tr>
2261<tr class="separator:a44affeeb090c3c6a3062830562672e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
2262<tr class="memitem:a37fa39012e90d568df7f774cd6d1e956"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
2263<tr class="memitem:a37fa39012e90d568df7f774cd6d1e956"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">numeric_cast</a> (Source source)</td></tr>
2264<tr class="separator:a37fa39012e90d568df7f774cd6d1e956"><td class="memSeparator" colspan="2">&#160;</td></tr>
2265<tr class="memitem:ad6ffcdfab3ded108070933bf4cee52a0"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
2266<tr class="memitem:ad6ffcdfab3ded108070933bf4cee52a0"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt; std::is_signed&lt; Source &gt;::value &amp;&amp;std::is_signed&lt; Dest &gt;::value, Dest &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad6ffcdfab3ded108070933bf4cee52a0">numeric_cast</a> (Source source)</td></tr>
2267<tr class="separator:ad6ffcdfab3ded108070933bf4cee52a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2268<tr class="memitem:ae3db25ec960ff865f0ed144dc018e61e"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
2269<tr class="memitem:ae3db25ec960ff865f0ed144dc018e61e"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt; std::is_signed&lt; Dest &gt;::value &amp;&amp;std::is_unsigned&lt; Source &gt;::value, Dest &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae3db25ec960ff865f0ed144dc018e61e">numeric_cast</a> (Source sValue)</td></tr>
2270<tr class="separator:ae3db25ec960ff865f0ed144dc018e61e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2271<tr class="memitem:a0071d5c83ebd2132118af70b1f3a539a"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
2272<tr class="memitem:a0071d5c83ebd2132118af70b1f3a539a"><td class="memTemplItemLeft" align="right" valign="top">std::enable_if_t&lt; std::is_unsigned&lt; Dest &gt;::value &amp;&amp;std::is_signed&lt; Source &gt;::value, Dest &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0071d5c83ebd2132118af70b1f3a539a">numeric_cast</a> (Source sValue)</td></tr>
2273<tr class="separator:a0071d5c83ebd2132118af70b1f3a539a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2274<tr class="memitem:a28f9c43e98211c77e579a14fb465bc77"><td class="memTemplParams" colspan="2">template&lt;typename DestType , typename SourceType &gt; </td></tr>
2275<tr class="memitem:a28f9c43e98211c77e579a14fb465bc77"><td class="memTemplItemLeft" align="right" valign="top">DestType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a28f9c43e98211c77e579a14fb465bc77">polymorphic_downcast</a> (SourceType value)</td></tr>
2276<tr class="separator:a28f9c43e98211c77e579a14fb465bc77"><td class="memSeparator" colspan="2">&#160;</td></tr>
2277<tr class="memitem:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa59f7a819c3e29d10ffc41e5c0616872">ConfigureLogging</a> (bool printToStandardOutput, bool printToDebugOutput, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> severity)</td></tr>
2278<tr class="memdesc:aa59f7a819c3e29d10ffc41e5c0616872"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configures the logging behaviour of the ARMNN library. <a href="#aa59f7a819c3e29d10ffc41e5c0616872">More...</a><br /></td></tr>
2279<tr class="separator:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memSeparator" colspan="2">&#160;</td></tr>
2280<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2281<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">CompatibleTypes</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>)</td></tr>
2282<tr class="separator:a238a74871f634b778176e5dc8391888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2283<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2284<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7296af8a86f22ef7f144dc02c4c94324">CompatibleTypes&lt; float &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2285<tr class="separator:a7296af8a86f22ef7f144dc02c4c94324"><td class="memSeparator" colspan="2">&#160;</td></tr>
2286<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2287<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7b224e4c135fa1fdb3e54dfe945e07f8">CompatibleTypes&lt; Half &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2288<tr class="separator:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2289<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2290<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad23bcbfd1876f1ae11c926d0e3e8c3e5">CompatibleTypes&lt; uint8_t &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2291<tr class="separator:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2292<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2293<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2bcd446605a7ee354be1038983358e04">CompatibleTypes&lt; int8_t &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2294<tr class="separator:a2bcd446605a7ee354be1038983358e04"><td class="memSeparator" colspan="2">&#160;</td></tr>
2295<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2296<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6a0a86fe227d22c1cf7381798ad8550f">CompatibleTypes&lt; int16_t &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2297<tr class="separator:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2298<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2299<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a000bb59f20fa937e2acff1c2aaba7944">CompatibleTypes&lt; int32_t &gt;</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType)</td></tr>
2300<tr class="separator:a000bb59f20fa937e2acff1c2aaba7944"><td class="memSeparator" colspan="2">&#160;</td></tr>
2301<tr class="memitem:a14d7f180bf51e86850305965c3707e07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a14d7f180bf51e86850305965c3707e07">swap</a> (<a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;second)</td></tr>
2302<tr class="separator:a14d7f180bf51e86850305965c3707e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
2303<tr class="memitem:a686b8288a04b3ffff67d560eea53f6be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a> (<a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;first, <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;second)</td></tr>
2304<tr class="separator:a686b8288a04b3ffff67d560eea53f6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
2305<tr class="memitem:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a> (<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> type)</td></tr>
2306<tr class="separator:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memSeparator" colspan="2">&#160;</td></tr>
2307<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2308<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac4fb1513cf6f4f3f40ab3d6559ec4067">LayerEnumOf</a> (const T *=nullptr)</td></tr>
2309<tr class="separator:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memSeparator" colspan="2">&#160;</td></tr>
2310<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2311<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afb1e69829289fb07cc349c0884f27abd">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_activation_layer.xhtml">ActivationLayer</a> *)</td></tr>
2312<tr class="separator:afb1e69829289fb07cc349c0884f27abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2313<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2314<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acc630e11a5baa28ad5723568a7a60109">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_addition_layer.xhtml">AdditionLayer</a> *)</td></tr>
2315<tr class="separator:acc630e11a5baa28ad5723568a7a60109"><td class="memSeparator" colspan="2">&#160;</td></tr>
2316<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2317<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a324e860c347972fce7a1c07531bed06e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_arg_min_max_layer.xhtml">ArgMinMaxLayer</a> *)</td></tr>
2318<tr class="separator:a324e860c347972fce7a1c07531bed06e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2319<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2320<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae22db3ab5196edbb2e4e5244adc512e3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_normalization_layer.xhtml">BatchNormalizationLayer</a> *)</td></tr>
2321<tr class="separator:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2322<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2323<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a87ffe3fb58ec36989d343e53e23fb0f8">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">BatchToSpaceNdLayer</a> *)</td></tr>
2324<tr class="separator:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2325<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2326<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a43b8024cb70c07116be132ca28b12a21">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_comparison_layer.xhtml">ComparisonLayer</a> *)</td></tr>
2327<tr class="separator:a43b8024cb70c07116be132ca28b12a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
2328<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2329<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a300c356944bb1e9d2dff6191d1c3501c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_concat_layer.xhtml">ConcatLayer</a> *)</td></tr>
2330<tr class="separator:a300c356944bb1e9d2dff6191d1c3501c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2331<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2332<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a307007c2249288fe158bfdfaf9e1c413">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_constant_layer.xhtml">ConstantLayer</a> *)</td></tr>
2333<tr class="separator:a307007c2249288fe158bfdfaf9e1c413"><td class="memSeparator" colspan="2">&#160;</td></tr>
2334<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2335<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4471d39d8390fc550c1f8688639e66f5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> *)</td></tr>
2336<tr class="separator:a4471d39d8390fc550c1f8688639e66f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2337<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2338<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af8df06bed5f1257864645e45948afa5c">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> *)</td></tr>
2339<tr class="separator:af8df06bed5f1257864645e45948afa5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2340<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2341<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab2f52d0c728933e36f581a07676d9fe9">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_convolution2d_layer.xhtml">Convolution2dLayer</a> *)</td></tr>
2342<tr class="separator:ab2f52d0c728933e36f581a07676d9fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2343<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2344<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad596268fcd03c87a4b6fde86f4732546">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> *)</td></tr>
2345<tr class="separator:ad596268fcd03c87a4b6fde86f4732546"><td class="memSeparator" colspan="2">&#160;</td></tr>
2346<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2347<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a939154289f544a02baec0735b27b8894">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml">DepthToSpaceLayer</a> *)</td></tr>
2348<tr class="separator:a939154289f544a02baec0735b27b8894"><td class="memSeparator" colspan="2">&#160;</td></tr>
2349<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2350<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a26a46c27bca08b5bd26abba341f1d795">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">DepthwiseConvolution2dLayer</a> *)</td></tr>
2351<tr class="separator:a26a46c27bca08b5bd26abba341f1d795"><td class="memSeparator" colspan="2">&#160;</td></tr>
2352<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2353<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a95e2d190d7483017b4f4841dd07776e5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_dequantize_layer.xhtml">DequantizeLayer</a> *)</td></tr>
2354<tr class="separator:a95e2d190d7483017b4f4841dd07776e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2355<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2356<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a22772d461066f995cd72d13066b0f46d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_detection_post_process_layer.xhtml">DetectionPostProcessLayer</a> *)</td></tr>
2357<tr class="separator:a22772d461066f995cd72d13066b0f46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2358<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2359<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a955b1001b8c57c60ce443a1e31468f20">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_division_layer.xhtml">DivisionLayer</a> *)</td></tr>
2360<tr class="separator:a955b1001b8c57c60ce443a1e31468f20"><td class="memSeparator" colspan="2">&#160;</td></tr>
2361<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2362<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a72f7601d11f32c8d9ccb49a80fcf662a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.xhtml">ElementwiseUnaryLayer</a> *)</td></tr>
2363<tr class="separator:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2364<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2365<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4acae0cdcdfab8e941af5c4e42e58cb3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fake_quantization_layer.xhtml">FakeQuantizationLayer</a> *)</td></tr>
2366<tr class="separator:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2367<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2368<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a575f5487e62465b6b9edbc447a26f32f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_floor_layer.xhtml">FloorLayer</a> *)</td></tr>
2369<tr class="separator:a575f5487e62465b6b9edbc447a26f32f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2370<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2371<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa689e4a3aa77e9d9e5851f566c5eb8b3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_fully_connected_layer.xhtml">FullyConnectedLayer</a> *)</td></tr>
2372<tr class="separator:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2373<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2374<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a548fb17a9bff172e751ae4bd3add62b5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_gather_layer.xhtml">GatherLayer</a> *)</td></tr>
2375<tr class="separator:a548fb17a9bff172e751ae4bd3add62b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2376<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2377<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adef1c8c63daa9d348a29e74eac33a054">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_input_layer.xhtml">InputLayer</a> *)</td></tr>
2378<tr class="separator:adef1c8c63daa9d348a29e74eac33a054"><td class="memSeparator" colspan="2">&#160;</td></tr>
2379<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2380<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a57bcf309be7adcc91001834979f87bde">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_instance_normalization_layer.xhtml">InstanceNormalizationLayer</a> *)</td></tr>
2381<tr class="separator:a57bcf309be7adcc91001834979f87bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
2382<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2383<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a36f16b97bcb662caaa4eae24ea16cccf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_l2_normalization_layer.xhtml">L2NormalizationLayer</a> *)</td></tr>
2384<tr class="separator:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2385<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2386<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afb6f9bd4f43118749a0336074bed7b35">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml">LogSoftmaxLayer</a> *)</td></tr>
2387<tr class="separator:afb6f9bd4f43118749a0336074bed7b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2388<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2389<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0d08fb555c6d1cba705fd73b71797a28">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_lstm_layer.xhtml">LstmLayer</a> *)</td></tr>
2390<tr class="separator:a0d08fb555c6d1cba705fd73b71797a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
2391<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2392<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6b231c8a547d4030d9a4a1618810c20b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_maximum_layer.xhtml">MaximumLayer</a> *)</td></tr>
2393<tr class="separator:a6b231c8a547d4030d9a4a1618810c20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2394<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2395<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af079ba32db74f53aba1ad19193cd2a4b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mean_layer.xhtml">MeanLayer</a> *)</td></tr>
2396<tr class="separator:af079ba32db74f53aba1ad19193cd2a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2397<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2398<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa17969606f64ea581c28431f2395e653">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_copy_layer.xhtml">MemCopyLayer</a> *)</td></tr>
2399<tr class="separator:aa17969606f64ea581c28431f2395e653"><td class="memSeparator" colspan="2">&#160;</td></tr>
2400<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2401<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a70f3d83f6d1e3918eab895c8083058fa">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_mem_import_layer.xhtml">MemImportLayer</a> *)</td></tr>
2402<tr class="separator:a70f3d83f6d1e3918eab895c8083058fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2403<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2404<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9e8199bdc39f928f694591a41d7aa0c0">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_merge_layer.xhtml">MergeLayer</a> *)</td></tr>
2405<tr class="separator:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2406<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2407<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad32a13408ace1c1fa520ed64a2cbe70f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_minimum_layer.xhtml">MinimumLayer</a> *)</td></tr>
2408<tr class="separator:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2409<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2410<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a40f1546c0fa69f318eeab4b29cc64b70">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_multiplication_layer.xhtml">MultiplicationLayer</a> *)</td></tr>
2411<tr class="separator:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2412<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2413<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a140713619ee498a149854a5376b8d072">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_normalization_layer.xhtml">NormalizationLayer</a> *)</td></tr>
2414<tr class="separator:a140713619ee498a149854a5376b8d072"><td class="memSeparator" colspan="2">&#160;</td></tr>
2415<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2416<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7a6e68f66d1d3819640b0f2d46a55fd1">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_output_layer.xhtml">OutputLayer</a> *)</td></tr>
2417<tr class="separator:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2418<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2419<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab6f1994db909dcc399cb1f8bc50c2d3d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pad_layer.xhtml">PadLayer</a> *)</td></tr>
2420<tr class="separator:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2421<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2422<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1e6b17606926b8f69dbeda7f7ff1df95">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_permute_layer.xhtml">PermuteLayer</a> *)</td></tr>
2423<tr class="separator:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memSeparator" colspan="2">&#160;</td></tr>
2424<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2425<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ade84059b48b38da3a233bed287864c5b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pooling2d_layer.xhtml">Pooling2dLayer</a> *)</td></tr>
2426<tr class="separator:ade84059b48b38da3a233bed287864c5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2427<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2428<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6e5eaa19ff232f11daa9a1c6caccf7fe">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a> *)</td></tr>
2429<tr class="separator:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
2430<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2431<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a58a5defa35b12773a97760efadffef4f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_prelu_layer.xhtml">PreluLayer</a> *)</td></tr>
2432<tr class="separator:a58a5defa35b12773a97760efadffef4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2433<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2434<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aaaaf64c0888ab25bfae770bd4c2ec34b">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantize_layer.xhtml">QuantizeLayer</a> *)</td></tr>
2435<tr class="separator:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2436<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2437<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a31bcd6f755df954a4d7b020a09499105">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.xhtml">QuantizedLstmLayer</a> *)</td></tr>
2438<tr class="separator:a31bcd6f755df954a4d7b020a09499105"><td class="memSeparator" colspan="2">&#160;</td></tr>
2439<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2440<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6a17f58da2071720e3003a56a092aab3">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_reshape_layer.xhtml">ReshapeLayer</a> *)</td></tr>
2441<tr class="separator:a6a17f58da2071720e3003a56a092aab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2442<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2443<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aafc370ea363f0565c3a8bced1e37c79e">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a> *)</td></tr>
2444<tr class="separator:aafc370ea363f0565c3a8bced1e37c79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2445<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2446<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3cbbb4e00618b072ace46751e660a295">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a> *)</td></tr>
2447<tr class="separator:a3cbbb4e00618b072ace46751e660a295"><td class="memSeparator" colspan="2">&#160;</td></tr>
2448<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2449<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af6af4b51e08d3e811620811ab5e0cd2d">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_softmax_layer.xhtml">SoftmaxLayer</a> *)</td></tr>
2450<tr class="separator:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2451<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2452<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac2d31ced5505a9d05287f5b71d25e34a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">SpaceToBatchNdLayer</a> *)</td></tr>
2453<tr class="separator:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2454<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2455<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a81c31de4f532a95ab85ed6d999029332">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_space_to_depth_layer.xhtml">SpaceToDepthLayer</a> *)</td></tr>
2456<tr class="separator:a81c31de4f532a95ab85ed6d999029332"><td class="memSeparator" colspan="2">&#160;</td></tr>
2457<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2458<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a24d3abbfc1ed81df673452c7148aa0cc">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_splitter_layer.xhtml">SplitterLayer</a> *)</td></tr>
2459<tr class="separator:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2460<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2461<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab676aab9119d1417764849099a099ecf">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stack_layer.xhtml">StackLayer</a> *)</td></tr>
2462<tr class="separator:ab676aab9119d1417764849099a099ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2463<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2464<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1b5ff142f1d4420a8d83d9bcff1bfff4">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_stand_in_layer.xhtml">StandInLayer</a> *)</td></tr>
2465<tr class="separator:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2466<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2467<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad640080ff4ea3e4f9ff05823e32ce15f">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_strided_slice_layer.xhtml">StridedSliceLayer</a> *)</td></tr>
2468<tr class="separator:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2469<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2470<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9cc235c8c5e2ef3d2788cd558d676b0a">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_subtraction_layer.xhtml">SubtractionLayer</a> *)</td></tr>
2471<tr class="separator:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2472<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2473<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a110b9fdf7f17a1d065cd59ebc4bb76f7">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_switch_layer.xhtml">SwitchLayer</a> *)</td></tr>
2474<tr class="separator:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2475<tr class="memitem:af44c8ebb1b55f4c42cc301d0bf030aa5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2476<tr class="memitem:af44c8ebb1b55f4c42cc301d0bf030aa5"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af44c8ebb1b55f4c42cc301d0bf030aa5">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_transpose_layer.xhtml">TransposeLayer</a> *)</td></tr>
2477<tr class="separator:af44c8ebb1b55f4c42cc301d0bf030aa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2478<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
2479<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplItemLeft" align="right" valign="top">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a60af5a86cf0261d0bdf4312736ab4461">LayerEnumOf</a> (const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">TransposeConvolution2dLayer</a> *)</td></tr>
2480<tr class="separator:a60af5a86cf0261d0bdf4312736ab4461"><td class="memSeparator" colspan="2">&#160;</td></tr>
2481<tr class="memitem:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1)</td></tr>
2482<tr class="separator:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2483<tr class="memitem:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2484<tr class="separator:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
2485<tr class="memitem:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2486<tr class="separator:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2487<tr class="memitem:aa9da770c93f812b264861f98cfdd650c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2488<tr class="separator:aa9da770c93f812b264861f98cfdd650c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2489<tr class="memitem:a658eea4e746b1e664796c48d7eaf19f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2490<tr class="separator:a658eea4e746b1e664796c48d7eaf19f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2491<tr class="memitem:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2492<tr class="separator:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2493<tr class="memitem:adf5de1faf58e2eea99a932883edc3ed0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2494<tr class="separator:adf5de1faf58e2eea99a932883edc3ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2495<tr class="memitem:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2496<tr class="separator:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2497<tr class="memitem:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a> (const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;backend, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</td></tr>
2498<tr class="separator:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memSeparator" colspan="2">&#160;</td></tr>
2499<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplParams" colspan="2">template&lt;typename T , typename V &gt; </td></tr>
2500<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</td></tr>
2501<tr class="separator:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2502<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplParams" colspan="2">template&lt;typename Float16Func , typename Float32Func , typename Uint8Func , typename Int32Func , typename BooleanFunc , typename ... Params&gt; </td></tr>
2503<tr class="memitem:af6dbe371ec651a8e0063624fdf32afc0"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af6dbe371ec651a8e0063624fdf32afc0">IsSupportedForDataTypeGeneric</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataType, Float16Func float16FuncPtr, Float32Func float32FuncPtr, Uint8Func uint8FuncPtr, Int32Func int32FuncPtr, BooleanFunc booleanFuncPtr, Params &amp;&amp;... params)</td></tr>
2504<tr class="separator:af6dbe371ec651a8e0063624fdf32afc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2505<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2506<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aeaee60c3c6c67a7cf37bbef45b89fc0a">TrueFunc</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2507<tr class="separator:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2508<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2509<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6e64aab48baba12883c73e90bfd07e77">FalseFunc</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2510<tr class="separator:a6e64aab48baba12883c73e90bfd07e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
2511<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2512<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a621c8ffe11bba3d7ab304a9ad3feec2f">FalseFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2513<tr class="separator:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2514<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2515<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a02d627e25da543b79ee8a59a1193a426">FalseFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2516<tr class="separator:a02d627e25da543b79ee8a59a1193a426"><td class="memSeparator" colspan="2">&#160;</td></tr>
2517<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2518<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4e4802d0916cb8b7da508ab03ce1f163">FalseFuncU8</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2519<tr class="separator:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
2520<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2521<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a07ae80b502ab664f1aaf7d6c00725982">FalseFuncI32</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2522<tr class="separator:a07ae80b502ab664f1aaf7d6c00725982"><td class="memSeparator" colspan="2">&#160;</td></tr>
2523<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2524<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0b55e509dd7e3bfea233a389a18c21e6">FalseInputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2525<tr class="separator:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2526<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2527<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a216969fbba54df95de3e68435b8074d7">FalseInputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2528<tr class="separator:a216969fbba54df95de3e68435b8074d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2529<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2530<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad3d0087e2533d808debd5c959fb3901f">FalseOutputFuncF32</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2531<tr class="separator:ad3d0087e2533d808debd5c959fb3901f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2532<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
2533<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2febf8d85a92b69e4a677a7c632418ee">FalseOutputFuncF16</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, Params &amp;&amp;... params)</td></tr>
2534<tr class="separator:a2febf8d85a92b69e4a677a7c632418ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
2535<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplParams" colspan="2">template&lt;LogSeverity Level&gt; </td></tr>
2536<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5f523aee1752323aeaf899085649320b">SetLoggingSinks</a> (bool standardOut, bool debugOut, bool coloured)</td></tr>
2537<tr class="separator:a5f523aee1752323aeaf899085649320b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2538<tr class="memitem:a7658f93d899c8646515a29370e6aa994"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a> (const std::string &amp;errorMessage, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</td></tr>
2539<tr class="separator:a7658f93d899c8646515a29370e6aa994"><td class="memSeparator" colspan="2">&#160;</td></tr>
2540<tr class="memitem:a38e626422579decc13e3ee37da1a84c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a> (const std::string &amp;warningMessage, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</td></tr>
2541<tr class="separator:a38e626422579decc13e3ee37da1a84c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2542<tr class="memitem:ae50fff9aa2a1ce46392d8641c10aa3bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a> (<a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> res, const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *layer, const <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2543<tr class="separator:ae50fff9aa2a1ce46392d8641c10aa3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2544<tr class="memitem:af002111f64aee648e3258247075cae36"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a> (<a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *layer, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2545<tr class="separator:af002111f64aee648e3258247075cae36"><td class="memSeparator" colspan="2">&#160;</td></tr>
2546<tr class="memitem:a56f168327453ea4461cbc1c0ac7f15b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a> (<a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *layer, <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> backend, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut, const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;availablePreferredBackends, std::string &amp;reasonIfUnsupported, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2547<tr class="separator:a56f168327453ea4461cbc1c0ac7f15b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2548<tr class="memitem:a8acab870a91373c720c9822b59ecf3b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8acab870a91373c720c9822b59ecf3b8">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;firstLayer, <a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;lastLayer, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2549<tr class="separator:a8acab870a91373c720c9822b59ecf3b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2550<tr class="memitem:a76dca645d0d0665f74e171bbc1901469"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a> (<a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings, <a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> &amp;subgraph, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2551<tr class="separator:a76dca645d0d0665f74e171bbc1901469"><td class="memSeparator" colspan="2">&#160;</td></tr>
2552<tr class="memitem:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a> (<a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;handleFactoryRegistry, <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings)</td></tr>
2553<tr class="separator:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2554<tr class="memitem:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a> (<a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *optNetObjPtr, <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;backendSettings, <a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2555<tr class="separator:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
2556<tr class="memitem:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a> (<a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> src, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> dst, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2557<tr class="separator:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2558<tr class="memitem:accb1637c58e1523f740025e0d0e7c6dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a> (<a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2559<tr class="separator:accb1637c58e1523f740025e0d0e7c6dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2560<tr class="memitem:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a> (<a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;slot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2561<tr class="separator:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2562<tr class="memitem:a8d9f52bbb69750456acca06988beabda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a> (<a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;outputSlot, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2563<tr class="separator:a8d9f52bbb69750456acca06988beabda"><td class="memSeparator" colspan="2">&#160;</td></tr>
2564<tr class="memitem:ab6ed577caec49def150e231c63af0d12"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a> (<a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> srcFactoryId, const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;layer, const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;connectedLayer, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry)</td></tr>
2565<tr class="separator:ab6ed577caec49def150e231c63af0d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
2566<tr class="memitem:a5d3468fb5880eb444cd25b55a86220ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a> (<a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;optGraph, <a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;backends, <a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;registry, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</td></tr>
2567<tr class="separator:a5d3468fb5880eb444cd25b55a86220ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
2568<tr class="memitem:a310dd804fd70eadb1e8854325e63f0bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a310dd804fd70eadb1e8854325e63f0bd">CreateQuantizedConst</a> (const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;tensor, std::vector&lt; uint8_t &gt; &amp;backing)</td></tr>
2569<tr class="separator:a310dd804fd70eadb1e8854325e63f0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2570<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplParams" colspan="2">template&lt;typename srcType &gt; </td></tr>
2571<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a> (const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</td></tr>
2572<tr class="separator:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memSeparator" colspan="2">&#160;</td></tr>
2573<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplParams" colspan="2">template&lt;typename LayerContainer &gt; </td></tr>
2574<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a> (const LayerContainer &amp;layerContainer, <a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;visitor)</td></tr>
2575<tr class="separator:a9835ef753dda5b5a2fe827680e41fda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2576<tr class="memitem:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a> (<a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;layer, bool expectCorrectInputType)</td></tr>
2577<tr class="separator:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2578<tr class="memitem:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a> (<a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;layer)</td></tr>
2579<tr class="separator:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2580<tr class="memitem:a2616ffdae2db993af5c08019fb61860a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2616ffdae2db993af5c08019fb61860a">InsertDebugLayerAfter</a> (<a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;graph, <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;layer)</td></tr>
2581<tr class="separator:a2616ffdae2db993af5c08019fb61860a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2582<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2583<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4907f6b88c3e72be6b8ae876de355e0a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, T &amp;&amp;optimization)</td></tr>
2584<tr class="separator:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2585<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplParams" colspan="2">template&lt;typename Front , typename... Others&gt; </td></tr>
2586<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0c8a28b71e49c04596289ff281e58f1a">Append</a> (<a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</td></tr>
2587<tr class="separator:a0c8a28b71e49c04596289ff281e58f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2588<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
2589<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a> (Args &amp;&amp;... args)</td></tr>
2590<tr class="separator:aa7427025a851113a492de0b68b23d22a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2591<tr class="memitem:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a12d3ffe11b54c0aaa59bdd8415701c36">FindMeasurement</a> (const std::string &amp;name, const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *event)</td></tr>
2592<tr class="separator:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
2593<tr class="memitem:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1b90db39f6a9ebd11591e76fa364b06f">FindKernelMeasurements</a> (const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *event)</td></tr>
2594<tr class="separator:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2595<tr class="memitem:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab03dcfb3b4019d8f58a67c41681951ae">GetEventPtr</a> (const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *ptr)</td></tr>
2596<tr class="separator:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
2597<tr class="memitem:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4b1e2158af2aedd3f00d2121c45b0f93">GetEventPtr</a> (const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> &gt; &amp;ptr)</td></tr>
2598<tr class="separator:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2599<tr class="memitem:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a20f74b679d59b52e9fae3bbef8f10ffb">CalcLevel</a> (const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *eventPtr)</td></tr>
2600<tr class="separator:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
2601<tr class="memitem:a50805c29c35b9903c2dea301d8091711"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a> (unsigned int inferenceIndex, const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *parentEvent, <a class="el" href="structarmnn_1_1_json_child_object.xhtml">JsonChildObject</a> &amp;parentObject, std::map&lt; const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&gt;&gt; descendantsMap)</td></tr>
2602<tr class="separator:a50805c29c35b9903c2dea301d8091711"><td class="memSeparator" colspan="2">&#160;</td></tr>
2603<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
2604<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
2605<tr class="separator:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
2606<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
2607<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a49538fa883b70c944e437d65d6628eec">ForEachLayerOutput</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</td></tr>
2608<tr class="separator:a49538fa883b70c944e437d65d6628eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2609<tr class="memitem:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a09ff1f6670d27d3b41e5b5d35a6c9f37">AssignSplitId</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
2610<tr class="separator:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memSeparator" colspan="2">&#160;</td></tr>
2611<tr class="memitem:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6b10dc0d12c7f4a52ad01b9975dbe908">IsReadyForSplitAssignment</a> (LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo)</td></tr>
2612<tr class="separator:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memSeparator" colspan="2">&#160;</td></tr>
2613<tr class="memitem:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a10d15f3df1ab52b3b915a4be1dbf386b">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayer)</td></tr>
2614<tr class="separator:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2615<tr class="memitem:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a62448ee306fc41cc7980c4b7eac3ebb6">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayer)</td></tr>
2616<tr class="separator:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2617<tr class="memitem:a66e9fcc01969d6afa35dfaa212ded223"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a66e9fcc01969d6afa35dfaa212ded223">BOOST_AUTO_TEST_CASE</a> (CheckConvolution2dLayerWithBiases)</td></tr>
2618<tr class="separator:a66e9fcc01969d6afa35dfaa212ded223"><td class="memSeparator" colspan="2">&#160;</td></tr>
2619<tr class="memitem:a154c5a01df05412929d89e06fc4d0d6d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a154c5a01df05412929d89e06fc4d0d6d">BOOST_AUTO_TEST_CASE</a> (CheckNamedConvolution2dLayerWithBiases)</td></tr>
2620<tr class="separator:a154c5a01df05412929d89e06fc4d0d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2621<tr class="memitem:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6eadb1671955b1bf7cdd8b29fd34aa33">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayer)</td></tr>
2622<tr class="separator:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memSeparator" colspan="2">&#160;</td></tr>
2623<tr class="memitem:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac36bd2336c0e3caefecde40bc07e2bf3">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayer)</td></tr>
2624<tr class="separator:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
2625<tr class="memitem:a14bcc6125921389dceb27e432bc7a489"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a14bcc6125921389dceb27e432bc7a489">BOOST_AUTO_TEST_CASE</a> (CheckDepthwiseConvolution2dLayerWithBiases)</td></tr>
2626<tr class="separator:a14bcc6125921389dceb27e432bc7a489"><td class="memSeparator" colspan="2">&#160;</td></tr>
2627<tr class="memitem:aaeafd5f3786a0bd215468714c1e743b1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aaeafd5f3786a0bd215468714c1e743b1">BOOST_AUTO_TEST_CASE</a> (CheckNamedDepthwiseConvolution2dLayerWithBiases)</td></tr>
2628<tr class="separator:aaeafd5f3786a0bd215468714c1e743b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2629<tr class="memitem:a3425db69ef4e4927a82e99025c16294a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3425db69ef4e4927a82e99025c16294a">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayer)</td></tr>
2630<tr class="separator:a3425db69ef4e4927a82e99025c16294a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2631<tr class="memitem:a631f8c0c9bceff4bef761eb7fd865686"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a631f8c0c9bceff4bef761eb7fd865686">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayer)</td></tr>
2632<tr class="separator:a631f8c0c9bceff4bef761eb7fd865686"><td class="memSeparator" colspan="2">&#160;</td></tr>
2633<tr class="memitem:a7b017a692367333d1035e276f252f46c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7b017a692367333d1035e276f252f46c">BOOST_AUTO_TEST_CASE</a> (CheckFullyConnectedLayerWithBiases)</td></tr>
2634<tr class="separator:a7b017a692367333d1035e276f252f46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2635<tr class="memitem:a5f3e4faca1d063ad73764571f898dc2d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5f3e4faca1d063ad73764571f898dc2d">BOOST_AUTO_TEST_CASE</a> (CheckNamedFullyConnectedLayerWithBiases)</td></tr>
2636<tr class="separator:a5f3e4faca1d063ad73764571f898dc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2637<tr class="memitem:a199581e11ebd49e1322b090484f3dd29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a199581e11ebd49e1322b090484f3dd29">BOOST_AUTO_TEST_CASE</a> (CheckBatchNormalizationLayer)</td></tr>
2638<tr class="separator:a199581e11ebd49e1322b090484f3dd29"><td class="memSeparator" colspan="2">&#160;</td></tr>
2639<tr class="memitem:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af1eda3afe49e91bf04d6e34a0e3be8ef">BOOST_AUTO_TEST_CASE</a> (CheckNamedBatchNormalizationLayer)</td></tr>
2640<tr class="separator:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
2641<tr class="memitem:a1a8221833cf3d29cd6435aed632dfcce"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1a8221833cf3d29cd6435aed632dfcce">BOOST_AUTO_TEST_CASE</a> (CheckConstLayer)</td></tr>
2642<tr class="separator:a1a8221833cf3d29cd6435aed632dfcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
2643<tr class="memitem:a9da3b50de4d108b81264a22c5adacf05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9da3b50de4d108b81264a22c5adacf05">BOOST_AUTO_TEST_CASE</a> (CheckNamedConstLayer)</td></tr>
2644<tr class="separator:a9da3b50de4d108b81264a22c5adacf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
2645<tr class="memitem:afefeb492b3446d34e413556a805210b6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afefeb492b3446d34e413556a805210b6">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerBasic)</td></tr>
2646<tr class="separator:afefeb492b3446d34e413556a805210b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2647<tr class="memitem:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8f6ad27911e2e711f665ae69c5b2cd1d">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerBasic)</td></tr>
2648<tr class="separator:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2649<tr class="memitem:a5400bc09082eab59bdfdbd61a06578f5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5400bc09082eab59bdfdbd61a06578f5">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerCifgDisabled)</td></tr>
2650<tr class="separator:a5400bc09082eab59bdfdbd61a06578f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2651<tr class="memitem:ad956f3db79c93a658cbccb41714e1542"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad956f3db79c93a658cbccb41714e1542">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerCifgDisabled)</td></tr>
2652<tr class="separator:ad956f3db79c93a658cbccb41714e1542"><td class="memSeparator" colspan="2">&#160;</td></tr>
2653<tr class="memitem:aa524f33d3d2b294847c3929237947b20"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa524f33d3d2b294847c3929237947b20">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerPeephole)</td></tr>
2654<tr class="separator:aa524f33d3d2b294847c3929237947b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
2655<tr class="memitem:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0f1dc6ab5dccc96c5a4df37cc5bcb923">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerPeephole)</td></tr>
2656<tr class="separator:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memSeparator" colspan="2">&#160;</td></tr>
2657<tr class="memitem:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0d00c75b42e46b3a7dd78f9a40324c33">BOOST_AUTO_TEST_CASE</a> (CheckLstmLayerProjection)</td></tr>
2658<tr class="separator:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
2659<tr class="memitem:a3a3105d08231d5f2e53511bab46224c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3a3105d08231d5f2e53511bab46224c9">BOOST_AUTO_TEST_CASE</a> (CheckNamedLstmLayerProjection)</td></tr>
2660<tr class="separator:a3a3105d08231d5f2e53511bab46224c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2661<tr class="memitem:a84e5356296be66aa930ec53118f5ef6b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a84e5356296be66aa930ec53118f5ef6b">BOOST_AUTO_TEST_CASE</a> (CheckQuantizedLstmLayer)</td></tr>
2662<tr class="separator:a84e5356296be66aa930ec53118f5ef6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2663<tr class="memitem:a492fae0605d06684297540bb9af319dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a492fae0605d06684297540bb9af319dc">BOOST_AUTO_TEST_CASE</a> (CheckNamedQuantizedLstmLayer)</td></tr>
2664<tr class="separator:a492fae0605d06684297540bb9af319dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2665<tr class="memitem:a49a398090bc1044038300ce246821a1f"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a49a398090bc1044038300ce246821a1f">GetProfilerEventSequenceSize</a> (<a class="el" href="classarmnn_1_1_profiler.xhtml">armnn::Profiler</a> *profiler)</td></tr>
2666<tr class="separator:a49a398090bc1044038300ce246821a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2667<tr class="memitem:a6482907b4c57873e197324f5cb66fd4d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a> (const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *inputNetwork, <a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;visitor)</td></tr>
2668<tr class="separator:a6482907b4c57873e197324f5cb66fd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2669<tr class="memitem:a8baf97065d802063eb9bcdd1a066dc86"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8baf97065d802063eb9bcdd1a066dc86">BOOST_AUTO_TEST_CASE</a> (QuantizeAddition)</td></tr>
2670<tr class="separator:a8baf97065d802063eb9bcdd1a066dc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
2671<tr class="memitem:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape)</td></tr>
2672<tr class="separator:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2673<tr class="memitem:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a> ()</td></tr>
2674<tr class="separator:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memSeparator" colspan="2">&#160;</td></tr>
2675<tr class="memitem:ae52296dff1f4879854f320d59f92574e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a> (const <a class="el" href="classarmnn_1_1_network.xhtml">Network</a> *network)</td></tr>
2676<tr class="separator:ae52296dff1f4879854f320d59f92574e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2677<tr class="memitem:a9cec088786b209989fe9e04e1be9636d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9cec088786b209989fe9e04e1be9636d">BOOST_AUTO_TEST_CASE</a> (InputOutputLayerDynamicQuant)</td></tr>
2678<tr class="separator:a9cec088786b209989fe9e04e1be9636d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2679<tr class="memitem:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7db6a78bb6eedbea7f0525f1fe59de28">BOOST_AUTO_TEST_CASE</a> (QuantizeAbsActivation)</td></tr>
2680<tr class="separator:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memSeparator" colspan="2">&#160;</td></tr>
2681<tr class="memitem:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2df3b432de50a9b9e8b486aa53e11cc5">BOOST_AUTO_TEST_CASE</a> (QuantizeLinearActivation)</td></tr>
2682<tr class="separator:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2683<tr class="memitem:a3dd219b394b8186d1849ee595193268d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3dd219b394b8186d1849ee595193268d">BOOST_AUTO_TEST_CASE</a> (QuantizeReLuActivation)</td></tr>
2684<tr class="separator:a3dd219b394b8186d1849ee595193268d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2685<tr class="memitem:a52e948b4bffc16a3933d812dbc384833"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a52e948b4bffc16a3933d812dbc384833">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftReLuActivation)</td></tr>
2686<tr class="separator:a52e948b4bffc16a3933d812dbc384833"><td class="memSeparator" colspan="2">&#160;</td></tr>
2687<tr class="memitem:abf109580225cb949565c8223bceadd5d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abf109580225cb949565c8223bceadd5d">BOOST_AUTO_TEST_CASE</a> (QuantizeBoundedReluActivation)</td></tr>
2688<tr class="separator:abf109580225cb949565c8223bceadd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2689<tr class="memitem:acbf871a6ec0726bfe2746e761a278108"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acbf871a6ec0726bfe2746e761a278108">BOOST_AUTO_TEST_CASE</a> (QuantizeTanHActivation)</td></tr>
2690<tr class="separator:acbf871a6ec0726bfe2746e761a278108"><td class="memSeparator" colspan="2">&#160;</td></tr>
2691<tr class="memitem:a32068047cc7b37f1bed1830508891526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a32068047cc7b37f1bed1830508891526">BOOST_AUTO_TEST_CASE</a> (QuantizeLeakyReLuActivation)</td></tr>
2692<tr class="separator:a32068047cc7b37f1bed1830508891526"><td class="memSeparator" colspan="2">&#160;</td></tr>
2693<tr class="memitem:a6c08ed3db08fcfca0592c62cd6080b76"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6c08ed3db08fcfca0592c62cd6080b76">BOOST_AUTO_TEST_CASE</a> (QuantizeELuActivation)</td></tr>
2694<tr class="separator:a6c08ed3db08fcfca0592c62cd6080b76"><td class="memSeparator" colspan="2">&#160;</td></tr>
2695<tr class="memitem:ab182b6a1d2348a86472001c92586717a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab182b6a1d2348a86472001c92586717a">BOOST_AUTO_TEST_CASE</a> (QuantizeHardSwishActivation)</td></tr>
2696<tr class="separator:ab182b6a1d2348a86472001c92586717a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2697<tr class="memitem:adf59f87645d301e9b56dd70aed350e54"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adf59f87645d301e9b56dd70aed350e54">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchNorm)</td></tr>
2698<tr class="separator:adf59f87645d301e9b56dd70aed350e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
2699<tr class="memitem:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthToSpace)</td></tr>
2700<tr class="separator:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2701<tr class="memitem:aa6281ed3090b74167170c8f692688de5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa6281ed3090b74167170c8f692688de5">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeEmptyNetwork)</td></tr>
2702<tr class="separator:aa6281ed3090b74167170c8f692688de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2703<tr class="memitem:ad432424d97021ae6c81e38130b1ec5d6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad432424d97021ae6c81e38130b1ec5d6">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeNoInputLayers)</td></tr>
2704<tr class="separator:ad432424d97021ae6c81e38130b1ec5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2705<tr class="memitem:a6e97e093453fc053a5c82386927a0d6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6e97e093453fc053a5c82386927a0d6c">BOOST_AUTO_TEST_CASE</a> (OverrideInputRangeInputLayers)</td></tr>
2706<tr class="separator:a6e97e093453fc053a5c82386927a0d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2707<tr class="memitem:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a> (const bool biasEnabled, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;inputShape, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;outputShape)</td></tr>
2708<tr class="separator:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memSeparator" colspan="2">&#160;</td></tr>
2709<tr class="memitem:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a> (const bool biasEnabled)</td></tr>
2710<tr class="separator:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memSeparator" colspan="2">&#160;</td></tr>
2711<tr class="memitem:a881ab05533f917737509402730668e4a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a881ab05533f917737509402730668e4a">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnected)</td></tr>
2712<tr class="separator:a881ab05533f917737509402730668e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2713<tr class="memitem:a69dd8c7608ff0935a247f3aa07f98212"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a69dd8c7608ff0935a247f3aa07f98212">BOOST_AUTO_TEST_CASE</a> (QuantizeFullyConnectedBiasEnabled)</td></tr>
2714<tr class="separator:a69dd8c7608ff0935a247f3aa07f98212"><td class="memSeparator" colspan="2">&#160;</td></tr>
2715<tr class="memitem:a14cfd39cfc30682fa821ade3dd298426"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a> (bool useBiases)</td></tr>
2716<tr class="separator:a14cfd39cfc30682fa821ade3dd298426"><td class="memSeparator" colspan="2">&#160;</td></tr>
2717<tr class="memitem:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa117e0112fdc02a7a011cfb39dc596ab">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2d)</td></tr>
2718<tr class="separator:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
2719<tr class="memitem:a9827adb2cf787460578999e0484568fa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9827adb2cf787460578999e0484568fa">BOOST_AUTO_TEST_CASE</a> (QuantizeConvolution2dWithBiases)</td></tr>
2720<tr class="separator:a9827adb2cf787460578999e0484568fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2721<tr class="memitem:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a> (bool useBiases)</td></tr>
2722<tr class="separator:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
2723<tr class="memitem:a1db5d836b83fc71602a7993616de5b42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1db5d836b83fc71602a7993616de5b42">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2d)</td></tr>
2724<tr class="separator:a1db5d836b83fc71602a7993616de5b42"><td class="memSeparator" colspan="2">&#160;</td></tr>
2725<tr class="memitem:a891abdb9079715cbcf85792e2b450652"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a891abdb9079715cbcf85792e2b450652">BOOST_AUTO_TEST_CASE</a> (QuantizeDepthwiseConvolution2dWithBiases)</td></tr>
2726<tr class="separator:a891abdb9079715cbcf85792e2b450652"><td class="memSeparator" colspan="2">&#160;</td></tr>
2727<tr class="memitem:abd033569519fec65077ea983f6c75a9d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abd033569519fec65077ea983f6c75a9d">BOOST_AUTO_TEST_CASE</a> (QuantizeInstanceNormalization)</td></tr>
2728<tr class="separator:abd033569519fec65077ea983f6c75a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2729<tr class="memitem:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a46d045b35ad6b8c2ffe0c04684f97779">BOOST_AUTO_TEST_CASE</a> (QuantizeLogSoftmax)</td></tr>
2730<tr class="separator:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memSeparator" colspan="2">&#160;</td></tr>
2731<tr class="memitem:a9c91b774c3089c55df77cc3a42da72de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape)</td></tr>
2732<tr class="separator:a9c91b774c3089c55df77cc3a42da72de"><td class="memSeparator" colspan="2">&#160;</td></tr>
2733<tr class="memitem:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7e94e9ab356805c498f5fc2fba87e4e6">BOOST_AUTO_TEST_CASE</a> (QuantizeSoftmax)</td></tr>
2734<tr class="separator:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2735<tr class="memitem:a4734542212b5811d0511ea6b16f35168"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4734542212b5811d0511ea6b16f35168">BOOST_AUTO_TEST_CASE</a> (QuantizeStandIn)</td></tr>
2736<tr class="separator:a4734542212b5811d0511ea6b16f35168"><td class="memSeparator" colspan="2">&#160;</td></tr>
2737<tr class="memitem:a120c131df35d78b3a56cb0f07decaf35"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *network, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info)</td></tr>
2738<tr class="separator:a120c131df35d78b3a56cb0f07decaf35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2739<tr class="memitem:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a> (<a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *network, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *activation, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *layerUnderTest, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info)</td></tr>
2740<tr class="separator:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2741<tr class="memitem:add22da50dd35a100548dde4c57ae89d1"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#add22da50dd35a100548dde4c57ae89d1">BOOST_AUTO_TEST_CASE</a> (QuantizePermute)</td></tr>
2742<tr class="separator:add22da50dd35a100548dde4c57ae89d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2743<tr class="memitem:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9a6bc66017eb7c132fd6e13ff0dcb540">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToBatch)</td></tr>
2744<tr class="separator:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memSeparator" colspan="2">&#160;</td></tr>
2745<tr class="memitem:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa78ce2bbe65cae8f3d60839467dbfc83">BOOST_AUTO_TEST_CASE</a> (QuantizeSpaceToDepth)</td></tr>
2746<tr class="separator:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
2747<tr class="memitem:aaa86b6903e41d2d2828e00b32f872375"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aaa86b6903e41d2d2828e00b32f872375">BOOST_AUTO_TEST_CASE</a> (QuantizePooling2d)</td></tr>
2748<tr class="separator:aaa86b6903e41d2d2828e00b32f872375"><td class="memSeparator" colspan="2">&#160;</td></tr>
2749<tr class="memitem:a369051e180246c66b20c93de5fecee8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a369051e180246c66b20c93de5fecee8c">BOOST_AUTO_TEST_CASE</a> (<a class="el" href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>)</td></tr>
2750<tr class="separator:a369051e180246c66b20c93de5fecee8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2751<tr class="memitem:ae3af95ea62252012cf93a98167afef64"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae3af95ea62252012cf93a98167afef64">BOOST_AUTO_TEST_CASE</a> (QuantizeArgMinMax)</td></tr>
2752<tr class="separator:ae3af95ea62252012cf93a98167afef64"><td class="memSeparator" colspan="2">&#160;</td></tr>
2753<tr class="memitem:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab83f837cdd5bfcff537dae72a96d6fc8">BOOST_AUTO_TEST_CASE</a> (QuantizeComparison)</td></tr>
2754<tr class="separator:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2755<tr class="memitem:add47ebcd4a59304a25c71996aea2b38b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#add47ebcd4a59304a25c71996aea2b38b">BOOST_AUTO_TEST_CASE</a> (QuantizeConcat)</td></tr>
2756<tr class="separator:add47ebcd4a59304a25c71996aea2b38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2757<tr class="memitem:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9258afcd4c6d8443c9130d8c9bf26442">BOOST_AUTO_TEST_CASE</a> (QuantizeReshape)</td></tr>
2758<tr class="separator:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memSeparator" colspan="2">&#160;</td></tr>
2759<tr class="memitem:a23a4f3c387a2a3a035e97764e34277c6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a23a4f3c387a2a3a035e97764e34277c6">BOOST_AUTO_TEST_CASE</a> (QuantizeSplitter)</td></tr>
2760<tr class="separator:a23a4f3c387a2a3a035e97764e34277c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2761<tr class="memitem:a102f37a09de1b0d4d78740a3c12902bf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a102f37a09de1b0d4d78740a3c12902bf">BOOST_AUTO_TEST_CASE</a> (QuantizeResize)</td></tr>
2762<tr class="separator:a102f37a09de1b0d4d78740a3c12902bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2763<tr class="memitem:a5f9c6094ae666c8e14907307d0481fac"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5f9c6094ae666c8e14907307d0481fac">BOOST_AUTO_TEST_CASE</a> (QuantizeStridedSlice)</td></tr>
2764<tr class="separator:a5f9c6094ae666c8e14907307d0481fac"><td class="memSeparator" colspan="2">&#160;</td></tr>
2765<tr class="memitem:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aec7cf8e3927ee7d24f8b19d206ce3e84">BOOST_AUTO_TEST_CASE</a> (QuantizeBatchToSpace)</td></tr>
2766<tr class="separator:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
2767<tr class="memitem:a733ef16d4eaaf8cce338320fa042f526"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a733ef16d4eaaf8cce338320fa042f526">BOOST_AUTO_TEST_CASE</a> (QuantizePrelu)</td></tr>
2768<tr class="separator:a733ef16d4eaaf8cce338320fa042f526"><td class="memSeparator" colspan="2">&#160;</td></tr>
2769<tr class="memitem:afa7a0a639e2772ff2ced67d77be810c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a> (bool useBiases)</td></tr>
2770<tr class="separator:afa7a0a639e2772ff2ced67d77be810c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2771<tr class="memitem:a5e66fe270ca921faeecd26735192d08b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5e66fe270ca921faeecd26735192d08b">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2d)</td></tr>
2772<tr class="separator:a5e66fe270ca921faeecd26735192d08b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2773<tr class="memitem:aec82007c45313f59d24b304e35b3db6c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aec82007c45313f59d24b304e35b3db6c">BOOST_AUTO_TEST_CASE</a> (QuantizeTransposeConvolution2dWithBiases)</td></tr>
2774<tr class="separator:aec82007c45313f59d24b304e35b3db6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2775<tr class="memitem:a77cba79eef903eb3d758b4edbcc626ef"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a77cba79eef903eb3d758b4edbcc626ef">BOOST_AUTO_TEST_CASE</a> (QuantizeStack)</td></tr>
2776<tr class="separator:a77cba79eef903eb3d758b4edbcc626ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
2777<tr class="memitem:a46f313720b601ca97a9c2a5158814bff"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a46f313720b601ca97a9c2a5158814bff">BOOST_AUTO_TEST_CASE</a> (QuantizeSlice)</td></tr>
2778<tr class="separator:a46f313720b601ca97a9c2a5158814bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
2779<tr class="memitem:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; uint8_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a> (float value)</td></tr>
2780<tr class="separator:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2781<tr class="memitem:a728153b62fa66e6ed1243e09144bfe8c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a728153b62fa66e6ed1243e09144bfe8c">BOOST_AUTO_TEST_CASE</a> (QuantizeInf)</td></tr>
2782<tr class="separator:a728153b62fa66e6ed1243e09144bfe8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2783<tr class="memitem:a898305dc4cdb78a5fbed481250f6cd35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a898305dc4cdb78a5fbed481250f6cd35">BOOST_AUTO_TEST_CASE</a> (QuantizeNegativeInf)</td></tr>
2784<tr class="separator:a898305dc4cdb78a5fbed481250f6cd35"><td class="memSeparator" colspan="2">&#160;</td></tr>
2785<tr class="memitem:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a> (const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;dataType)</td></tr>
2786<tr class="separator:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2787<tr class="memitem:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a94eb3bdf0e1c8c748c2e29dce048ace4">BOOST_AUTO_TEST_CASE</a> (PreserveTypeFloat32)</td></tr>
2788<tr class="separator:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2789<tr class="memitem:ab242670b85e047e79bb297cdb192cc93"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab242670b85e047e79bb297cdb192cc93">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQAsymmU8)</td></tr>
2790<tr class="separator:ab242670b85e047e79bb297cdb192cc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
2791<tr class="memitem:a061891029598224370aae4cd18b78406"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a061891029598224370aae4cd18b78406">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm8)</td></tr>
2792<tr class="separator:a061891029598224370aae4cd18b78406"><td class="memSeparator" colspan="2">&#160;</td></tr>
2793<tr class="memitem:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4d4386cbb19dbc551e423992ecdd0d61">BOOST_AUTO_TEST_CASE</a> (PreserveTypeQsymm16)</td></tr>
2794<tr class="separator:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
2795<tr class="memitem:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8c09fbb75d2c2dea48926a540fc5cce9">BOOST_AUTO_TEST_CASE</a> (TestConnectionPreservationAfterDynamicQuant)</td></tr>
2796<tr class="separator:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2797<tr class="memitem:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a01fa2d4db2c1b4ee5269a31e514f37ec">RuntimeLoadedNetworksReserve</a> (<a class="el" href="classarmnn_1_1_runtime.xhtml">armnn::Runtime</a> *runtime)</td></tr>
2798<tr class="separator:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
2799<tr class="memitem:abe311824d11bad4e6f93c8f94a721052"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abe311824d11bad4e6f93c8f94a721052">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;right)</td></tr>
2800<tr class="separator:abe311824d11bad4e6f93c8f94a721052"><td class="memSeparator" colspan="2">&#160;</td></tr>
2801<tr class="memitem:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af676ec7e9534bd6e6ac3072a2c0403f4">boost_test_print_type</a> (std::ostream &amp;ostr, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape)</td></tr>
2802<tr class="separator:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2803<tr class="memitem:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad3d9cbf26cb5894fd6d9169dbe743417">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndName)</td></tr>
2804<tr class="separator:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memSeparator" colspan="2">&#160;</td></tr>
2805<tr class="memitem:ac7ce83f024515592cffac13ae5220f1e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac7ce83f024515592cffac13ae5220f1e">BOOST_AUTO_TEST_CASE</a> (CheckInputLayerVisitorBindingIdAndNameNull)</td></tr>
2806<tr class="separator:ac7ce83f024515592cffac13ae5220f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2807<tr class="memitem:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac28b0a4861e6eab3e7621a7ed4eb5f62">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndName)</td></tr>
2808<tr class="separator:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memSeparator" colspan="2">&#160;</td></tr>
2809<tr class="memitem:a9a7475b081b431ffa9915aac51c2d338"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9a7475b081b431ffa9915aac51c2d338">BOOST_AUTO_TEST_CASE</a> (CheckOutputLayerVisitorBindingIdAndNameNull)</td></tr>
2810<tr class="separator:a9a7475b081b431ffa9915aac51c2d338"><td class="memSeparator" colspan="2">&#160;</td></tr>
2811<tr class="memitem:a5a38bd982292180692711b0ae296bb34"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5a38bd982292180692711b0ae296bb34">CheckLayerBindingId</a> (<a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> visitorId, <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> id)</td></tr>
2812<tr class="separator:a5a38bd982292180692711b0ae296bb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
2813<tr class="memitem:aa1166f0056ce60553e825ae3cee4d5f7"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa1166f0056ce60553e825ae3cee4d5f7">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> &amp;b)</td></tr>
2814<tr class="separator:aa1166f0056ce60553e825ae3cee4d5f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2815<tr class="memitem:a5e783a951642781b9e7b55db06a514b7"><td class="memItemLeft" align="right" valign="top">arm_compute::NormalizationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5e783a951642781b9e7b55db06a514b7">CreateAclNormalizationLayerInfoForL2Normalization</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a> dataLayout)</td></tr>
2816<tr class="separator:a5e783a951642781b9e7b55db06a514b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2817<tr class="memitem:afdba36f125621d775d471f0daf613df2"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo::ActivationFunction&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a> (<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> armnnFunction)</td></tr>
2818<tr class="separator:afdba36f125621d775d471f0daf613df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
2819<tr class="memitem:ad701d0d29baa4266ab4d33b090aa661c"><td class="memItemLeft" align="right" valign="top">arm_compute::ActivationLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a> (const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;actDesc)</td></tr>
2820<tr class="separator:ad701d0d29baa4266ab4d33b090aa661c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2821<tr class="memitem:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memItemLeft" align="right" valign="top">arm_compute::PoolingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad256fcf8c7f4d5a240fa47f0b56d50af">ConvertPoolingAlgorithmToAclPoolingType</a> (<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a> poolingAlgorithm)</td></tr>
2822<tr class="separator:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memSeparator" colspan="2">&#160;</td></tr>
2823<tr class="memitem:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memItemLeft" align="right" valign="top">arm_compute::DimensionRoundingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8f3bfacadfd6d2146d6ccd299dabc7aa">ConvertOutputShapeRoundingToAclDimensionRoundingType</a> (<a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a> rounding)</td></tr>
2824<tr class="separator:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
2825<tr class="memitem:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memItemLeft" align="right" valign="top">arm_compute::NormType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa5baabb8e3a4aa6cbdcab419d743e747">ConvertNormalizationAlgorithmChannelToAclNormType</a> (<a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a> channelType)</td></tr>
2826<tr class="separator:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memSeparator" colspan="2">&#160;</td></tr>
2827<tr class="memitem:abccab9266ab13dbd806445af31ddbba7"><td class="memItemLeft" align="right" valign="top">arm_compute::FullyConnectedLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a> (const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;fullyConnectedDesc)</td></tr>
2828<tr class="separator:abccab9266ab13dbd806445af31ddbba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
2829<tr class="memitem:ae9bdcb8ac91731109dc423d6ed476204"><td class="memItemLeft" align="right" valign="top">arm_compute::InterpolationPolicy&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a> (<a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a> resizeMethod)</td></tr>
2830<tr class="separator:ae9bdcb8ac91731109dc423d6ed476204"><td class="memSeparator" colspan="2">&#160;</td></tr>
2831<tr class="memitem:aa70ebe7b7898fe69ce24db803caa373e"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a> (const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;softmaxDesc, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;tensor)</td></tr>
2832<tr class="separator:aa70ebe7b7898fe69ce24db803caa373e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2833<tr class="memitem:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memItemLeft" align="right" valign="top">std::set&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8cbabc875597b3bed0ccdc0adb289fde">ComputeSplitAxis</a> (const <a class="el" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;desc, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;input)</td></tr>
2834<tr class="separator:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
2835<tr class="memitem:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a36e8f52330a21eeab3cc7c4e030f3583">GetUnpaddedTensorStrides</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;tensorInfo)</td></tr>
2836<tr class="separator:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memSeparator" colspan="2">&#160;</td></tr>
2837<tr class="memitem:a83c4a275acf59f62b8387f389d0929d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_optional.xhtml">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a83c4a275acf59f62b8387f389d0929d5">GetBiasTypeFromWeightsType</a> (<a class="el" href="classarmnn_1_1_optional.xhtml">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt; weightsType)</td></tr>
2838<tr class="separator:a83c4a275acf59f62b8387f389d0929d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2839<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
2840<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acea2d8c53b441e24b6d60b090fda37c9">CheckSupportRule</a> (F rule, <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt; reasonIfUnsupported, const char *reason)</td></tr>
2841<tr class="separator:acea2d8c53b441e24b6d60b090fda37c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2842<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2843<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5980f7b42f4df041efebdc6ae242f686">AllTypesAreEqualImpl</a> (T)</td></tr>
2844<tr class="separator:a5980f7b42f4df041efebdc6ae242f686"><td class="memSeparator" colspan="2">&#160;</td></tr>
2845<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Rest&gt; </td></tr>
2846<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a> (T t1, T t2, Rest... rest)</td></tr>
2847<tr class="separator:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
2848<tr class="memitem:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a17955517b0d148f7ffdbffe8b46e41e0">MockBackendId</a> ()</td></tr>
2849<tr class="separator:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2850<tr class="memitem:a872803f5667392efc3c8e5607bd453ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a872803f5667392efc3c8e5607bd453ad">GetBiasDataType</a> (<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> inputDataType)</td></tr>
2851<tr class="separator:a872803f5667392efc3c8e5607bd453ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
2852<tr class="memitem:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *tensor, const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;permutationVector, void *permuteBuffer)</td></tr>
2853<tr class="separator:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
2854<tr class="memitem:a3170fdd696155a247ecd81d445c0e2e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a> (<a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2855<tr class="separator:a3170fdd696155a247ecd81d445c0e2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2856<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
2857<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a52b301fd3adce20b51c4482cb52f1a38">ReorderWeightChannelsForAcl</a> (const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;weightHandle, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
2858<tr class="separator:a52b301fd3adce20b51c4482cb52f1a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
2859<tr class="memitem:a1e8288eac7e909fdb58b6113d816763a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weightInfo, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout)</td></tr>
2860<tr class="separator:a1e8288eac7e909fdb58b6113d816763a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2861<tr class="memitem:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a51e8b95a429e11678ffa8b9fdc88351b">ConvertWeightTensorFromArmnnToAcl</a> (const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *weightTensor, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, void *permuteBuffer)</td></tr>
2862<tr class="separator:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2863<tr class="memitem:ad69ffa576a596b9eb20ab6a41420c541"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a> (int32_t mask, int32_t numDim)</td></tr>
2864<tr class="separator:ad69ffa576a596b9eb20ab6a41420c541"><td class="memSeparator" colspan="2">&#160;</td></tr>
2865<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplParams" colspan="2">template&lt;typename CopyFunc &gt; </td></tr>
2866<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a92c91193007aa49f4732d6dba5397f8d">CopyTensorContentsGeneric</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *srcTensor, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *dstTensor, CopyFunc copy)</td></tr>
2867<tr class="separator:a92c91193007aa49f4732d6dba5397f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2868<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplParams" colspan="2">template&lt;typename SrcTensorHandleType , typename DstTensorHandleType , typename DescriptorType &gt; </td></tr>
2869<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afb5b53a8b0c01d4f27830bef0f25ca09">GatherTensorHandlePairs</a> (const DescriptorType &amp;descriptor, std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;tensorHandlePairs)</td></tr>
2870<tr class="separator:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memSeparator" colspan="2">&#160;</td></tr>
2871<tr class="memitem:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a27ecdfeeea12de313f2b97d309a35d9d">LowerString</a> (std::string value)</td></tr>
2872<tr class="separator:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2873<tr class="memitem:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3ca05ac77af0a0444ff34c1319094f6d">ParseTuningLevel</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;value, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> defaultValue)</td></tr>
2874<tr class="separator:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2875<tr class="memitem:af464d406b22309a891ed0aa3008a7953"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af464d406b22309a891ed0aa3008a7953">ParseBoolean</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;value, bool defaultValue)</td></tr>
2876<tr class="separator:af464d406b22309a891ed0aa3008a7953"><td class="memSeparator" colspan="2">&#160;</td></tr>
2877<tr class="memitem:a4e9a59f936f3d2050a17597d22825f53"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4e9a59f936f3d2050a17597d22825f53">ParseFile</a> (const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;value, std::string defaultValue)</td></tr>
2878<tr class="separator:a4e9a59f936f3d2050a17597d22825f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
2879<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
2880<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af457790132251cde6545072d879c7684">ParseOptions</a> (const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.xhtml">BackendOptions</a> &gt; &amp;<a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>, <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> backend, F f)</td></tr>
2881<tr class="separator:af457790132251cde6545072d879c7684"><td class="memSeparator" colspan="2">&#160;</td></tr>
2882<tr class="memitem:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab562537b5c1ef1e6cde9db9f5fa322bd">ConfigureTuner</a> (arm_compute::CLTuner &amp;tuner, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> level)</td></tr>
2883<tr class="separator:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2884<tr class="memitem:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adfe10e7086e3e3b98927cf84aee03dd0">ClBackendId</a> ()</td></tr>
2885<tr class="separator:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2886<tr class="memitem:ac86fc56b9a27576bfe930a7012a402d5"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac86fc56b9a27576bfe930a7012a402d5">ClTensorHandleFactoryId</a> ()</td></tr>
2887<tr class="separator:ac86fc56b9a27576bfe930a7012a402d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
2888<tr class="memitem:a1391582cd6e145b67c98f3410667968e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1391582cd6e145b67c98f3410667968e">ClAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2889<tr class="separator:a1391582cd6e145b67c98f3410667968e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2890<tr class="memitem:a42ef3cee193102dc7755193579209cca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a42ef3cee193102dc7755193579209cca">ClActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;descriptor)</td></tr>
2891<tr class="separator:a42ef3cee193102dc7755193579209cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
2892<tr class="memitem:aefc82adf365ff14b0095dafdd2df6afc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aefc82adf365ff14b0095dafdd2df6afc">ClAdditionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2893<tr class="separator:aefc82adf365ff14b0095dafdd2df6afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2894<tr class="memitem:ab80423b306d8e0436b9a316922911d4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab80423b306d8e0436b9a316922911d4d">ClArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
2895<tr class="separator:ab80423b306d8e0436b9a316922911d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2896<tr class="memitem:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad6cb42ca5150bb96c151e4a4e6557d70">ClBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;desc)</td></tr>
2897<tr class="separator:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
2898<tr class="memitem:a67957983877fb2c720a2ad7f88c45a3c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a67957983877fb2c720a2ad7f88c45a3c">ClBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
2899<tr class="separator:a67957983877fb2c720a2ad7f88c45a3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2900<tr class="memitem:a7782f0809076f14363eacb4a38964b9f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7782f0809076f14363eacb4a38964b9f">ClConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor)</td></tr>
2901<tr class="separator:a7782f0809076f14363eacb4a38964b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2902<tr class="memitem:a46efae0191388fd33db4e95c5d79e2be"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a46efae0191388fd33db4e95c5d79e2be">ClConvertFp16ToFp32WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2903<tr class="separator:a46efae0191388fd33db4e95c5d79e2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
2904<tr class="memitem:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a37f6946bfb7a9c7d64881b7a2e13945f">ClConvertFp32ToFp16WorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2905<tr class="separator:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2906<tr class="memitem:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acd1146eb56f1473a0bf4561bcc1d1529">ClConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
2907<tr class="separator:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memSeparator" colspan="2">&#160;</td></tr>
2908<tr class="memitem:a5634af98b603236c6748adb5ac92e766"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5634af98b603236c6748adb5ac92e766">ClDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;desc)</td></tr>
2909<tr class="separator:a5634af98b603236c6748adb5ac92e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
2910<tr class="memitem:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4ec5dfcb3e419ddce1fcb3b799f312e1">ClDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
2911<tr class="separator:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2912<tr class="memitem:a75045734c29d7d6635342c05adbc151b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a75045734c29d7d6635342c05adbc151b">ClDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2913<tr class="separator:a75045734c29d7d6635342c05adbc151b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2914<tr class="memitem:a6a0edac987d58b405636df2eb2ee525d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6a0edac987d58b405636df2eb2ee525d">ClDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2915<tr class="separator:a6a0edac987d58b405636df2eb2ee525d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2916<tr class="memitem:a8874961260f35da85229554f92e16ca9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8874961260f35da85229554f92e16ca9">ClFloorWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2917<tr class="separator:a8874961260f35da85229554f92e16ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
2918<tr class="memitem:a00ef2c55913f952924a3e23556655285"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a00ef2c55913f952924a3e23556655285">ClFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
2919<tr class="separator:a00ef2c55913f952924a3e23556655285"><td class="memSeparator" colspan="2">&#160;</td></tr>
2920<tr class="memitem:acf69869c2242e5e3741c4f9252099393"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acf69869c2242e5e3741c4f9252099393">ClGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2921<tr class="separator:acf69869c2242e5e3741c4f9252099393"><td class="memSeparator" colspan="2">&#160;</td></tr>
2922<tr class="memitem:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a79d362f0c6e04d51807e0d81b5b05f3a">ClInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
2923<tr class="separator:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2924<tr class="memitem:aef334cdb24000c330f4d2e5f1b384784"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aef334cdb24000c330f4d2e5f1b384784">ClL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2925<tr class="separator:aef334cdb24000c330f4d2e5f1b384784"><td class="memSeparator" colspan="2">&#160;</td></tr>
2926<tr class="memitem:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a90ab88fe4c7aa9466c4653404a6b2213">ClLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2927<tr class="separator:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memSeparator" colspan="2">&#160;</td></tr>
2928<tr class="memitem:a553706c6338ffc52b0d916859f642587"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a553706c6338ffc52b0d916859f642587">ClMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2929<tr class="separator:a553706c6338ffc52b0d916859f642587"><td class="memSeparator" colspan="2">&#160;</td></tr>
2930<tr class="memitem:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa1fff3c5bdebee27ad33aacc6d110d32">ClMeanValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;desc)</td></tr>
2931<tr class="separator:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memSeparator" colspan="2">&#160;</td></tr>
2932<tr class="memitem:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8c04c8e796a4fbec706df42ed9c27e4e">ClMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2933<tr class="separator:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
2934<tr class="memitem:a674a280a55c3760374a05ee24e9e3e74"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a674a280a55c3760374a05ee24e9e3e74">ClMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2935<tr class="separator:a674a280a55c3760374a05ee24e9e3e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
2936<tr class="memitem:a144c2e243a255715f309999077ed1792"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a144c2e243a255715f309999077ed1792">ClNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
2937<tr class="separator:a144c2e243a255715f309999077ed1792"><td class="memSeparator" colspan="2">&#160;</td></tr>
2938<tr class="memitem:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adcf7b7d939bac1cfaeb333c7b3175bb8">ClPadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;descriptor)</td></tr>
2939<tr class="separator:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
2940<tr class="memitem:a26c25df9e2271333ab4d4ef71db41dca"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a26c25df9e2271333ab4d4ef71db41dca">ClPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;descriptor)</td></tr>
2941<tr class="separator:a26c25df9e2271333ab4d4ef71db41dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
2942<tr class="memitem:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8a21bb33f7f054ce7b48a8c7df9e6d4a">ClPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
2943<tr class="separator:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
2944<tr class="memitem:ae58d1f4437a779274037bc86efac9e26"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae58d1f4437a779274037bc86efac9e26">ClPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2945<tr class="separator:ae58d1f4437a779274037bc86efac9e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
2946<tr class="memitem:a5fb7fe07abfb2373103d842b47a24726"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5fb7fe07abfb2373103d842b47a24726">ClQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;previousCellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;previousOutputIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
2947<tr class="separator:a5fb7fe07abfb2373103d842b47a24726"><td class="memSeparator" colspan="2">&#160;</td></tr>
2948<tr class="memitem:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9c1b478e30a1e8a4ecac874cf15f13d4">ClQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2949<tr class="separator:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
2950<tr class="memitem:af5bb7a834a74983cbbc249785d0c392b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af5bb7a834a74983cbbc249785d0c392b">ClReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2951<tr class="separator:af5bb7a834a74983cbbc249785d0c392b"><td class="memSeparator" colspan="2">&#160;</td></tr>
2952<tr class="memitem:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a95b187d3c6b7b46f4fbdc60be69fc02c">ClResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;descriptor)</td></tr>
2953<tr class="separator:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2954<tr class="memitem:a3f6f9f0d3567ae04b49ea88727845900"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3f6f9f0d3567ae04b49ea88727845900">ClRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2955<tr class="separator:a3f6f9f0d3567ae04b49ea88727845900"><td class="memSeparator" colspan="2">&#160;</td></tr>
2956<tr class="memitem:a6d85d2806d0a90140832ad8113c1d350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6d85d2806d0a90140832ad8113c1d350">ClSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;descriptor)</td></tr>
2957<tr class="separator:a6d85d2806d0a90140832ad8113c1d350"><td class="memSeparator" colspan="2">&#160;</td></tr>
2958<tr class="memitem:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abc6f7e5fe77e5aed3f7842755dd34073">ClSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
2959<tr class="separator:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memSeparator" colspan="2">&#160;</td></tr>
2960<tr class="memitem:a534b28fd4b345bbc938d055ff5b8970f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a534b28fd4b345bbc938d055ff5b8970f">ClSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
2961<tr class="separator:a534b28fd4b345bbc938d055ff5b8970f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2962<tr class="memitem:a5f81bc4e5533cfe99932865bd102735c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5f81bc4e5533cfe99932865bd102735c">ClSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;desc)</td></tr>
2963<tr class="separator:a5f81bc4e5533cfe99932865bd102735c"><td class="memSeparator" colspan="2">&#160;</td></tr>
2964<tr class="memitem:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3ac8a60f837b19b20987e4fd238ce0cd">ClSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
2965<tr class="separator:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2966<tr class="memitem:a8c9fec997dbb5db4cdb433c36d075782"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8c9fec997dbb5db4cdb433c36d075782">ClStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;descriptor)</td></tr>
2967<tr class="separator:a8c9fec997dbb5db4cdb433c36d075782"><td class="memSeparator" colspan="2">&#160;</td></tr>
2968<tr class="memitem:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a157e0508f6d6d08e3ca4cf6c661242e6">ClStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
2969<tr class="separator:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
2970<tr class="memitem:a3bbbf958387c788549b0d8481232875f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3bbbf958387c788549b0d8481232875f">ClSubtractionValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2971<tr class="separator:a3bbbf958387c788549b0d8481232875f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2972<tr class="memitem:a719ea81939d6a25f8636b52c59165d66"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a719ea81939d6a25f8636b52c59165d66">ClTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
2973<tr class="separator:a719ea81939d6a25f8636b52c59165d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
2974<tr class="memitem:a1c3a39fbecb45be0bb15dd665c9be61d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1c3a39fbecb45be0bb15dd665c9be61d">ClTransposeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;descriptor)</td></tr>
2975<tr class="separator:a1c3a39fbecb45be0bb15dd665c9be61d"><td class="memSeparator" colspan="2">&#160;</td></tr>
2976<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
2977<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a> (arm_compute::CLTensor &amp;dstTensor, const T *srcData)</td></tr>
2978<tr class="separator:a73447f827b995cf90d4029151514b4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
2979<tr class="memitem:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
2980<tr class="separator:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memSeparator" colspan="2">&#160;</td></tr>
2981<tr class="memitem:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
2982<tr class="separator:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memSeparator" colspan="2">&#160;</td></tr>
2983<tr class="memitem:a46747c3d0b99968be0b37d74bc9687dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a46747c3d0b99968be0b37d74bc9687dd">InitializeArmComputeClTensorData</a> (arm_compute::CLTensor &amp;clTensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *handle)</td></tr>
2984<tr class="separator:a46747c3d0b99968be0b37d74bc9687dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2985<tr class="memitem:a2192b5ff59aacdb27f8b0238323915dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a> (const <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;clError, const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;location)</td></tr>
2986<tr class="separator:a2192b5ff59aacdb27f8b0238323915dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
2987<tr class="memitem:aff5bee79757341daf750c7dd7c123a15"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aff5bee79757341daf750c7dd7c123a15">RunClFunction</a> (arm_compute::IFunction &amp;function, const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;location)</td></tr>
2988<tr class="separator:aff5bee79757341daf750c7dd7c123a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
2989<tr class="memitem:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3a34a305e5187f3a3c67030d3bebbdb0">NeonBackendId</a> ()</td></tr>
2990<tr class="separator:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
2991<tr class="memitem:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aad5d4888304a57fb22c4608dc5d94dc1">NeonTensorHandleFactoryId</a> ()</td></tr>
2992<tr class="separator:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
2993<tr class="memitem:afc773aec6f845adc0cc547ce475dfe3f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afc773aec6f845adc0cc547ce475dfe3f">NeonAbsWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2994<tr class="separator:afc773aec6f845adc0cc547ce475dfe3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
2995<tr class="memitem:a46495807633a01d826851e1cb498f071"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a46495807633a01d826851e1cb498f071">NeonActivationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;descriptor)</td></tr>
2996<tr class="separator:a46495807633a01d826851e1cb498f071"><td class="memSeparator" colspan="2">&#160;</td></tr>
2997<tr class="memitem:afc541536011ccfb06853c45bfaba2dfd"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#afc541536011ccfb06853c45bfaba2dfd">NeonAdditionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
2998<tr class="separator:afc541536011ccfb06853c45bfaba2dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
2999<tr class="memitem:a61d1f39297fec6e3062e4047dc5f236e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a61d1f39297fec6e3062e4047dc5f236e">NeonArgMinMaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;descriptor)</td></tr>
3000<tr class="separator:a61d1f39297fec6e3062e4047dc5f236e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3001<tr class="memitem:a6c856ceba1828fe201b2b6c032d70371"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6c856ceba1828fe201b2b6c032d70371">NeonBatchNormalizationValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;mean, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;var, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;beta, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;gamma, const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;descriptor)</td></tr>
3002<tr class="separator:a6c856ceba1828fe201b2b6c032d70371"><td class="memSeparator" colspan="2">&#160;</td></tr>
3003<tr class="memitem:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a00623eeb8f77dac6dbbc1395b5270dbb">NeonBatchToSpaceNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;desc)</td></tr>
3004<tr class="separator:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
3005<tr class="memitem:a8a219633e750d6daffcef3b641fa11f3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8a219633e750d6daffcef3b641fa11f3">NeonConcatWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;descriptor)</td></tr>
3006<tr class="separator:a8a219633e750d6daffcef3b641fa11f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
3007<tr class="memitem:af64bb043263ba7d09c98fd88da60726d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af64bb043263ba7d09c98fd88da60726d">NeonConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
3008<tr class="separator:af64bb043263ba7d09c98fd88da60726d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3009<tr class="memitem:a116d88067bf98ce9858ab73e68f605f9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a116d88067bf98ce9858ab73e68f605f9">NeonDepthToSpaceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor)</td></tr>
3010<tr class="separator:a116d88067bf98ce9858ab73e68f605f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3011<tr class="memitem:a168ebb908e1ee4bac24cb7992510de73"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a168ebb908e1ee4bac24cb7992510de73">NeonDepthwiseConvolutionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
3012<tr class="separator:a168ebb908e1ee4bac24cb7992510de73"><td class="memSeparator" colspan="2">&#160;</td></tr>
3013<tr class="memitem:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acefede7cc57c71ea4cfe1c888bb413e0">NeonDequantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3014<tr class="separator:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3015<tr class="memitem:ae0ae21bef03ed19f252c72c660e571a4"><td class="memItemLeft" align="right" valign="top">arm_compute::DetectionPostProcessLayerInfo&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a> (const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
3016<tr class="separator:ae0ae21bef03ed19f252c72c660e571a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
3017<tr class="memitem:a304243ccb52986da06388dc57deae88f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a304243ccb52986da06388dc57deae88f">NeonDetectionPostProcessValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionBoxes, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionClasses, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionScores, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;numDetections, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;desc)</td></tr>
3018<tr class="separator:a304243ccb52986da06388dc57deae88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3019<tr class="memitem:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3a62359fc5ebfe9628871c0ba79fb37c">NeonDivisionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3020<tr class="separator:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3021<tr class="memitem:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0b7897a2a04016aa7fa24e2a1d10e944">NeonFullyConnectedWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;biases, const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;descriptor)</td></tr>
3022<tr class="separator:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memSeparator" colspan="2">&#160;</td></tr>
3023<tr class="memitem:ad536149438b0481b7278ad741e18fb5a"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad536149438b0481b7278ad741e18fb5a">NeonGreaterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3024<tr class="separator:ad536149438b0481b7278ad741e18fb5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3025<tr class="memitem:aea722abe239545030f4c6fe4e083816f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aea722abe239545030f4c6fe4e083816f">NeonInstanceNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;descriptor)</td></tr>
3026<tr class="separator:aea722abe239545030f4c6fe4e083816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3027<tr class="memitem:ae838df3960d2b5d18d73ed2a07aee917"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae838df3960d2b5d18d73ed2a07aee917">NeonL2NormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;descriptor)</td></tr>
3028<tr class="separator:ae838df3960d2b5d18d73ed2a07aee917"><td class="memSeparator" colspan="2">&#160;</td></tr>
3029<tr class="memitem:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a9e06cc2a2ac8b88fc72972695a17910f">NeonLstmFloatWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;scratchBuffer, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;descriptor, const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
3030<tr class="separator:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3031<tr class="memitem:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8d2ea79addd8ef64be2ca0dad3408f00">NeonMaximumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3032<tr class="separator:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
3033<tr class="memitem:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab81dd6d40850f8fea025ee7ce51f86d0">NeonMeanWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;desc)</td></tr>
3034<tr class="separator:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3035<tr class="memitem:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab81159ebfa638af1b91fe1e8c5de1955">NeonMinimumWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3036<tr class="memdesc:ab81159ebfa638af1b91fe1e8c5de1955"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate function for validating the inputs and output. <a href="#ab81159ebfa638af1b91fe1e8c5de1955">More...</a><br /></td></tr>
3037<tr class="separator:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memSeparator" colspan="2">&#160;</td></tr>
3038<tr class="memitem:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a38bdbed2a1e28ab15cac0cc0f42c3fa6">NeonMultiplicationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3039<tr class="separator:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
3040<tr class="memitem:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2ec6297db90d1d4c258c13d2d72b13d9">NeonNormalizationWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;descriptor)</td></tr>
3041<tr class="separator:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3042<tr class="memitem:a39209c0c078e83227222eb885317c2c5"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a39209c0c078e83227222eb885317c2c5">NeonPadWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;descriptor)</td></tr>
3043<tr class="separator:a39209c0c078e83227222eb885317c2c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
3044<tr class="memitem:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a70650f6b1d3b8511fcdb989ca769cdbb">NeonPermuteWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;descriptor)</td></tr>
3045<tr class="separator:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
3046<tr class="memitem:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1f07655db8ad7f2738bb0d3d9e2316cc">NeonPooling2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;descriptor)</td></tr>
3047<tr class="separator:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
3048<tr class="memitem:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a188adc104b16db3dc23ed2c5ff06cbb8">NeonPreluWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;alpha, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3049<tr class="separator:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
3050<tr class="memitem:ae83632e641892ad2de78f316376f6bd0"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae83632e641892ad2de78f316376f6bd0">NeonQuantizedLstmWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateIn, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;cellStateOut, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputStateOut, const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;paramsInfo)</td></tr>
3051<tr class="separator:ae83632e641892ad2de78f316376f6bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3052<tr class="memitem:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4d1e35c8bbe48e99dd522ac0f75f77d7">NeonQuantizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3053<tr class="separator:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
3054<tr class="memitem:a430021076042c8157a926a3bb3a37152"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a430021076042c8157a926a3bb3a37152">NeonReshapeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3055<tr class="separator:a430021076042c8157a926a3bb3a37152"><td class="memSeparator" colspan="2">&#160;</td></tr>
3056<tr class="memitem:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a552d65f4e0a6c9e7c7796e77590063e9">NeonResizeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;descriptor)</td></tr>
3057<tr class="separator:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3058<tr class="memitem:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa7d1b5e38aa8cb731519ff12e2a73350">NeonRsqrtWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3059<tr class="separator:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memSeparator" colspan="2">&#160;</td></tr>
3060<tr class="memitem:a0a223c0997e3f7faa373ed55f954252b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a0a223c0997e3f7faa373ed55f954252b">NeonSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;descriptor)</td></tr>
3061<tr class="separator:a0a223c0997e3f7faa373ed55f954252b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3062<tr class="memitem:a4077a9771ba9c551f4ce61863f65e798"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4077a9771ba9c551f4ce61863f65e798">NeonSoftmaxWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;descriptor)</td></tr>
3063<tr class="separator:a4077a9771ba9c551f4ce61863f65e798"><td class="memSeparator" colspan="2">&#160;</td></tr>
3064<tr class="memitem:ab29257da888af2c4971db1344d8a526c"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab29257da888af2c4971db1344d8a526c">NeonSpaceToBatchNdWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;descriptor)</td></tr>
3065<tr class="separator:ab29257da888af2c4971db1344d8a526c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3066<tr class="memitem:af6d2d40482240def4614deb694933d1e"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af6d2d40482240def4614deb694933d1e">NeonSpaceToDepthWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;descriptor)</td></tr>
3067<tr class="separator:af6d2d40482240def4614deb694933d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3068<tr class="memitem:aab5ea316b3decb05430323d847e3a773"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aab5ea316b3decb05430323d847e3a773">NeonSplitterWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;outputs, unsigned int splitAxis)</td></tr>
3069<tr class="separator:aab5ea316b3decb05430323d847e3a773"><td class="memSeparator" colspan="2">&#160;</td></tr>
3070<tr class="memitem:a65c83c74bdbd66cdd547d331998952eb"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a65c83c74bdbd66cdd547d331998952eb">NeonStackWorkloadValidate</a> (const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;inputs, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;descriptor)</td></tr>
3071<tr class="separator:a65c83c74bdbd66cdd547d331998952eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
3072<tr class="memitem:ac71d08bf1257807c112b4d019802acc3"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac71d08bf1257807c112b4d019802acc3">NeonStridedSliceWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;descriptor)</td></tr>
3073<tr class="separator:ac71d08bf1257807c112b4d019802acc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
3074<tr class="memitem:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a73c15f02c46f64c1adf0fafb4c7c2cac">NeonSubtractionWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input0, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input1, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output)</td></tr>
3075<tr class="separator:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
3076<tr class="memitem:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abc73c3c9a09f91c22c64d7c166e9be4d">NeonTransposeConvolution2dWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;weights, const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;biases)</td></tr>
3077<tr class="separator:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3078<tr class="memitem:a2b8555526752015115fa7fa00d88542b"><td class="memItemLeft" align="right" valign="top">arm_compute::Status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2b8555526752015115fa7fa00d88542b">NeonTransposeWorkloadValidate</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;input, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;output, const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;descriptor)</td></tr>
3079<tr class="separator:a2b8555526752015115fa7fa00d88542b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3080<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3081<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a> (arm_compute::Tensor &amp;dstTensor, const T *srcData)</td></tr>
3082<tr class="separator:a1351e01f9fb983937caf79e353142b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
3083<tr class="memitem:ad9aa8d49d42ada3f757290033af39857"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad9aa8d49d42ada3f757290033af39857">InitializeArmComputeTensorData</a> (arm_compute::Tensor &amp;tensor, const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *handle)</td></tr>
3084<tr class="separator:ad9aa8d49d42ada3f757290033af39857"><td class="memSeparator" colspan="2">&#160;</td></tr>
3085<tr class="memitem:a01d1e745f360ccd0b655214645bcef32"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a> (const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</td></tr>
3086<tr class="separator:a01d1e745f360ccd0b655214645bcef32"><td class="memSeparator" colspan="2">&#160;</td></tr>
3087<tr class="memitem:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memItemLeft" align="right" valign="top">auto&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a> (const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</td></tr>
3088<tr class="separator:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3089<tr class="memitem:ae7d50846b2769f81521af24d063bc093"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae7d50846b2769f81521af24d063bc093">RefBackendId</a> ()</td></tr>
3090<tr class="separator:ae7d50846b2769f81521af24d063bc093"><td class="memSeparator" colspan="2">&#160;</td></tr>
3091<tr class="memitem:a5baedac4819656984488bc1fe5fe1505"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5baedac4819656984488bc1fe5fe1505">RefTensorHandleFactoryId</a> ()</td></tr>
3092<tr class="separator:a5baedac4819656984488bc1fe5fe1505"><td class="memSeparator" colspan="2">&#160;</td></tr>
3093<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplParams" colspan="2">template&lt;DataType ArmnnType&gt; </td></tr>
3094<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6a2e058d934e9d784eab57ee7121d69c">IsDataType</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3095<tr class="separator:a6a2e058d934e9d784eab57ee7121d69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3096<tr class="memitem:a87b99791ccf8793961db67ea19eb6fa4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a87b99791ccf8793961db67ea19eb6fa4">IsSigned32</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3097<tr class="separator:a87b99791ccf8793961db67ea19eb6fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
3098<tr class="memitem:a3d504240723912bf9c76ff3afeaa25c5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3d504240723912bf9c76ff3afeaa25c5">IsBFloat16</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3099<tr class="separator:a3d504240723912bf9c76ff3afeaa25c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
3100<tr class="memitem:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad78d822be14a8d585cd038cf0e73cd7e">IsFloat16</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3101<tr class="separator:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3102<tr class="memitem:abcd0d843d5736b78740ae73249b6b977"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abcd0d843d5736b78740ae73249b6b977">IsQSymmS16</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3103<tr class="separator:abcd0d843d5736b78740ae73249b6b977"><td class="memSeparator" colspan="2">&#160;</td></tr>
3104<tr class="memitem:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a09a7cd515c3b495e61b2a5116bf6a335">IsQSymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3105<tr class="separator:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memSeparator" colspan="2">&#160;</td></tr>
3106<tr class="memitem:a47d136a5519331dee24f5e01b206ae7c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a47d136a5519331dee24f5e01b206ae7c">IsQAsymmS8</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3107<tr class="separator:a47d136a5519331dee24f5e01b206ae7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3108<tr class="memitem:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a37c36bbf668cd8a0d7dcd731c9b591d7">IsQAsymmU8</a> (const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;info)</td></tr>
3109<tr class="separator:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
3110<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptorType &gt; </td></tr>
3111<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad05c0670c947d35d39b3b0217e9975cf">IsOperationQueueDescriptor</a> (const QueueDescriptorType &amp;)</td></tr>
3112<tr class="separator:ad05c0670c947d35d39b3b0217e9975cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
3113<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3114<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a93e7b76d19b33076b2a4eae44014d5ea">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a> &amp;)</td></tr>
3115<tr class="separator:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
3116<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3117<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a05323af66b9f762e269a27562a2bbdd0">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.xhtml">ConstantQueueDescriptor</a> &amp;)</td></tr>
3118<tr class="separator:a05323af66b9f762e269a27562a2bbdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3119<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3120<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a91332212b6a2cc9c0ea32af03c600b4f">IsOperationQueueDescriptor</a> (const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.xhtml">PermuteQueueDescriptor</a> &amp;)</td></tr>
3121<tr class="separator:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3122<tr class="memitem:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> (float in, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
3123<tr class="separator:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
3124<tr class="memitem:ad10d72a6f8859949bbe6134c638ce171"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad10d72a6f8859949bbe6134c638ce171">Activation</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;tensorInfo, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a> function, float a, float b)</td></tr>
3125<tr class="separator:ad10d72a6f8859949bbe6134c638ce171"><td class="memSeparator" colspan="2">&#160;</td></tr>
3126<tr class="memitem:a374120de442fe42c26536bb4f1e2a5a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;in, int32_t *out, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputTensorInfo, <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a> function, int axis)</td></tr>
3127<tr class="separator:a374120de442fe42c26536bb4f1e2a5a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3128<tr class="memitem:adc251e65d99405496d503811589e9a20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adc251e65d99405496d503811589e9a20">BatchNormImpl</a> (const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.xhtml">BatchNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;meanDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;varianceDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;betaDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;gammaDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
3129<tr class="separator:adc251e65d99405496d503811589e9a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
3130<tr class="memitem:ac70a495c61526a0500b33b23db86ca27"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac70a495c61526a0500b33b23db86ca27">Offset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
3131<tr class="separator:ac70a495c61526a0500b33b23db86ca27"><td class="memSeparator" colspan="2">&#160;</td></tr>
3132<tr class="memitem:a8746512fab5ec10c2c57800c66311ba7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a> (const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;dataLayout, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputTensorInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
3133<tr class="separator:a8746512fab5ec10c2c57800c66311ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
3134<tr class="memitem:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1deafe1b2777bcaadefe2371b3ebbb27">Concatenate</a> (const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> &amp;data)</td></tr>
3135<tr class="separator:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
3136<tr class="memitem:af98115cd07776d3fa8424434d2a7a897"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af98115cd07776d3fa8424434d2a7a897">Convolve</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;rFilterShape, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rFilterDecoder, bool biasEnabled, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *pBiasDecoder, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout, unsigned int paddingTop, unsigned int paddingLeft, unsigned int xStride, unsigned int yStride, unsigned int xDilation, unsigned int yDilation, bool depthwise)</td></tr>
3137<tr class="separator:af98115cd07776d3fa8424434d2a7a897"><td class="memSeparator" colspan="2">&#160;</td></tr>
3138<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3139<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">Debug</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const T *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3140<tr class="separator:a5aae369ef847a00062925cea8e9be9c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
3141<tr class="memitem:a43791bdad23b9c3dd62711c03f793881"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a43791bdad23b9c3dd62711c03f793881">Debug&lt; BFloat16 &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3142<tr class="separator:a43791bdad23b9c3dd62711c03f793881"><td class="memSeparator" colspan="2">&#160;</td></tr>
3143<tr class="memitem:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3144<tr class="separator:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3145<tr class="memitem:a26abbe393a88835dd569523bec69719b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const float *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3146<tr class="separator:a26abbe393a88835dd569523bec69719b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3147<tr class="memitem:a1121718a486db835afa99328650e7e89"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const uint8_t *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3148<tr class="separator:a1121718a486db835afa99328650e7e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
3149<tr class="memitem:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const int8_t *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3150<tr class="separator:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3151<tr class="memitem:acc771f233bb7884932260ba353118b46"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const int16_t *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3152<tr class="separator:acc771f233bb7884932260ba353118b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
3153<tr class="memitem:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const int32_t *inputData, <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, const std::string &amp;layerName, unsigned int slotIndex)</td></tr>
3154<tr class="separator:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3155<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3156<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1545cb162c5a64d75d9c0c05e8ea387c">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info, const void *data=nullptr)</td></tr>
3157<tr class="separator:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3158<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3159<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adb59a379c467b6d48874e946183b4d21">MakeDecoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info, const void *data)</td></tr>
3160<tr class="separator:adb59a379c467b6d48874e946183b4d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
3161<tr class="memitem:ab023d9a7687e35c0f108458a094c1f56"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3162<tr class="separator:ab023d9a7687e35c0f108458a094c1f56"><td class="memSeparator" colspan="2">&#160;</td></tr>
3163<tr class="memitem:acae7e910f899ae67340c9ce29e406a86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acae7e910f899ae67340c9ce29e406a86">Dequantize</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo)</td></tr>
3164<tr class="separator:acae7e910f899ae67340c9ce29e406a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
3165<tr class="memitem:ae8ed5c640761fb6744aec0ee16388417"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a> (unsigned int k)</td></tr>
3166<tr class="separator:ae8ed5c640761fb6744aec0ee16388417"><td class="memSeparator" colspan="2">&#160;</td></tr>
3167<tr class="memitem:a2748f45e58b1c612d473043f711d1434"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">TopKSort</a> (unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</td></tr>
3168<tr class="separator:a2748f45e58b1c612d473043f711d1434"><td class="memSeparator" colspan="2">&#160;</td></tr>
3169<tr class="memitem:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a> (const float *boxI, const float *boxJ)</td></tr>
3170<tr class="separator:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3171<tr class="memitem:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memItemLeft" align="right" valign="top">std::vector&lt; unsigned int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a> (unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</td></tr>
3172<tr class="separator:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3173<tr class="memitem:ae8dcbb74cf0c855724f12833a55a5684"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a> (unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</td></tr>
3174<tr class="separator:ae8dcbb74cf0c855724f12833a55a5684"><td class="memSeparator" colspan="2">&#160;</td></tr>
3175<tr class="memitem:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;boxEncodingsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#abfa50e55ee160bfc64d8c3bb3dc40cc4">scoresInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#afe48c20bc9f2e0b86d00806b5e17f2a4">anchorsInfo</a>, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionBoxesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionClassesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;detectionScoresInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;numDetectionsInfo, const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;desc, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;<a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</td></tr>
3176<tr class="separator:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
3177<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3178<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; T &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a56867cc5245724ab56953604b1eec9ee">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info, void *data=nullptr)</td></tr>
3179<tr class="separator:a56867cc5245724ab56953604b1eec9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
3180<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3181<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a363da7c8d642ea382e3bd2f1c6283d52">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info, void *data)</td></tr>
3182<tr class="separator:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
3183<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
3184<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; bool &gt; &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6fcd01a9cdee158d3022ad089c27c078">MakeEncoder</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info, void *data)</td></tr>
3185<tr class="separator:a6fcd01a9cdee158d3022ad089c27c078"><td class="memSeparator" colspan="2">&#160;</td></tr>
3186<tr class="memitem:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;rInputShape, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rInputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;rOutputShape, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rWeightDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rBiasDecoder, bool biasEnabled, unsigned int K, bool transposeWeights)</td></tr>
3187<tr class="memdesc:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs a matrix multiplication and optionally adds a bias. <a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">More...</a><br /></td></tr>
3188<tr class="separator:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3189<tr class="memitem:a66004b2326f8ccb1faa71d5efa186633"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a66004b2326f8ccb1faa71d5efa186633">Gather</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;paramsInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;indicesInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;params, const int32_t *indices, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3190<tr class="separator:a66004b2326f8ccb1faa71d5efa186633"><td class="memSeparator" colspan="2">&#160;</td></tr>
3191<tr class="memitem:ac3d98d09064176b259e8a9038b06699d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac3d98d09064176b259e8a9038b06699d">InstanceNorm</a> (const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.xhtml">InstanceNormalizationQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputDecoder, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputEncoder)</td></tr>
3192<tr class="separator:ac3d98d09064176b259e8a9038b06699d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3193<tr class="memitem:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;output, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;descriptor)</td></tr>
3194<tr class="separator:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3195<tr class="memitem:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</td></tr>
3196<tr class="separator:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memSeparator" colspan="2">&#160;</td></tr>
3197<tr class="memitem:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a> (const unsigned int numDims, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</td></tr>
3198<tr class="separator:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
3199<tr class="memitem:a165ae372a7f67cad64ef3395d30122ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a165ae372a7f67cad64ef3395d30122ce">Mean</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;input, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3200<tr class="separator:a165ae372a7f67cad64ef3395d30122ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
3201<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3202<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">Pad</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</td></tr>
3203<tr class="separator:a28e115f5d28500324b53fae9e6c00b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
3204<tr class="memitem:a37fe5e5b5f650430dc0e71d69977bebd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a37fe5e5b5f650430dc0e71d69977bebd">Pad&lt; BFloat16 &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *inputData, <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *outData, const float padValue)</td></tr>
3205<tr class="separator:a37fe5e5b5f650430dc0e71d69977bebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3206<tr class="memitem:a09fc687543b371ddab280203dc989bd9"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const float *inputData, float *outData, const float padValue)</td></tr>
3207<tr class="separator:a09fc687543b371ddab280203dc989bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3208<tr class="memitem:a1b165f49b29968defb57e2d9b8628b9f"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *inputData, <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *outData, const float padValue)</td></tr>
3209<tr class="separator:a1b165f49b29968defb57e2d9b8628b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
3210<tr class="memitem:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const uint8_t *inputData, uint8_t *outData, const float padValue)</td></tr>
3211<tr class="separator:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3212<tr class="memitem:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memItemLeft" align="right" valign="top">template void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_PadList, const int16_t *inputData, int16_t *outData, const float padValue)</td></tr>
3213<tr class="separator:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memSeparator" colspan="2">&#160;</td></tr>
3214<tr class="memitem:ae2e93e304cf516841c521e3eaee025cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;rInputDecoder, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;rOutputEncoder, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;params)</td></tr>
3215<tr class="memdesc:ae2e93e304cf516841c521e3eaee025cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the Pooling2d operation. <a href="#ae2e93e304cf516841c521e3eaee025cd">More...</a><br /></td></tr>
3216<tr class="separator:ae2e93e304cf516841c521e3eaee025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
3217<tr class="memitem:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa1ca65b3ba7f7c760eb3d5563c12864e">PreluImpl</a> (const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.xhtml">PreluQueueDescriptor</a> &amp;data, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;alphaData, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3218<tr class="separator:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3219<tr class="memitem:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a> (const float *inputData, float *outputData, uint32_t numElements, float min, float max)</td></tr>
3220<tr class="separator:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
3221<tr class="memitem:a93d269806f34407695dc10f510001c30"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a93d269806f34407695dc10f510001c30">GetTensorInfo</a> (const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *tensorHandle)</td></tr>
3222<tr class="memdesc:a93d269806f34407695dc10f510001c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">float32 helpers <a href="#a93d269806f34407695dc10f510001c30">More...</a><br /></td></tr>
3223<tr class="separator:a93d269806f34407695dc10f510001c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
3224<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
3225<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2187ea15b1ae8c323a0cc5c211fc43d9">GetInputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3226<tr class="separator:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
3227<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
3228<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a2c0b2e5bd1b03aec10473a201f57f859">GetOutputTensorData</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3229<tr class="separator:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memSeparator" colspan="2">&#160;</td></tr>
3230<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3231<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplItemLeft" align="right" valign="top">const float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a691846a9eee59b0cd5b22fb5f674e007">GetInputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3232<tr class="separator:a691846a9eee59b0cd5b22fb5f674e007"><td class="memSeparator" colspan="2">&#160;</td></tr>
3233<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3234<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplItemLeft" align="right" valign="top">float *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab5f0afc1e37fd100843ecd55d8f284c1">GetOutputTensorDataFloat</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3235<tr class="separator:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3236<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3237<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a084b0ce273bef78aa314bd97fc574b84">GetInputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3238<tr class="separator:a084b0ce273bef78aa314bd97fc574b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
3239<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
3240<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ab98e77207c3d676b0b9ffa67357dbc6a">GetOutputTensorDataHalf</a> (unsigned int idx, const PayloadType &amp;data)</td></tr>
3241<tr class="separator:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3242<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3243<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplItemLeft" align="right" valign="top">std::vector&lt; float &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4144d7535639c617fca0d095379493f0">Dequantize</a> (const T *quant, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info)</td></tr>
3244<tr class="memdesc:a4144d7535639c617fca0d095379493f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">u8 helpers <a href="#a4144d7535639c617fca0d095379493f0">More...</a><br /></td></tr>
3245<tr class="separator:a4144d7535639c617fca0d095379493f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3246<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
3247<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1204727d8ce3ee1e60daf08079eb892e">Dequantize</a> (const T *inputData, float *outputData, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info)</td></tr>
3248<tr class="separator:a1204727d8ce3ee1e60daf08079eb892e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3249<tr class="memitem:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abbbe4a59b72fba606f21e7c24dcbd8c0">Quantize</a> (uint8_t *quant, const float *dequant, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;info)</td></tr>
3250<tr class="separator:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
3251<tr class="memitem:a25dc224be48103343302b5a6fd588fe7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a25dc224be48103343302b5a6fd588fe7">Resize</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;in, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> dataLayout, <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a> resizeMethod, bool alignCorners)</td></tr>
3252<tr class="separator:a25dc224be48103343302b5a6fd588fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
3253<tr class="memitem:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3254<tr class="separator:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
3255<tr class="memitem:aa999ff2585ad75b95954a9323f63c32b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aa999ff2585ad75b95954a9323f63c32b">Softmax</a> (<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;in, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;out, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputTensorInfo, float beta, int axis)</td></tr>
3256<tr class="memdesc:aa999ff2585ad75b95954a9323f63c32b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. <a href="#aa999ff2585ad75b95954a9323f63c32b">More...</a><br /></td></tr>
3257<tr class="separator:aa999ff2585ad75b95954a9323f63c32b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3258<tr class="memitem:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a> (const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;dataLayout)</td></tr>
3259<tr class="separator:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
3260<tr class="memitem:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3261<tr class="separator:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
3262<tr class="memitem:a5e1dc69443b64ad16b669388a6023f7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;outputInfo, const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;params, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputData, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputData)</td></tr>
3263<tr class="separator:a5e1dc69443b64ad16b669388a6023f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3264<tr class="memitem:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#ac4d30f99e7fa46fe375e925a6ad537be">Split</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;data)</td></tr>
3265<tr class="separator:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memSeparator" colspan="2">&#160;</td></tr>
3266<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
3267<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a427c3d26d05b518b1ace407035f5920e">Splitter</a> (const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;data)</td></tr>
3268<tr class="separator:a427c3d26d05b518b1ace407035f5920e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3269<tr class="memitem:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a> (const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.xhtml">StackQueueDescriptor</a> &amp;data, std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt;&gt;&gt; &amp;inputs, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;output)</td></tr>
3270<tr class="separator:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
3271<tr class="memitem:a86d7a7168ac00b75b4971f9aad623698"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a> (const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;inputInfo, const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</td></tr>
3272<tr class="separator:a86d7a7168ac00b75b4971f9aad623698"><td class="memSeparator" colspan="2">&#160;</td></tr>
3273<tr class="memitem:affec174d91f234497dfbceba5e251dee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#affec174d91f234497dfbceba5e251dee">TransposeConvolution2dImpl</a> (const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;descriptor, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;inputShape, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;inputDecoder, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;outputShape, <a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;outputEncoder, const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;weightsShape, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;weightsDecoder, <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *biasesDecoder)</td></tr>
3274<tr class="separator:affec174d91f234497dfbceba5e251dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
3275<tr class="memitem:af487cc4568faf50403f12ed1c7a70a2d"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#af487cc4568faf50403f12ed1c7a70a2d">GetInputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;data)</td></tr>
3276<tr class="separator:af487cc4568faf50403f12ed1c7a70a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3277<tr class="memitem:a932b4856d89c58865e1f39ec5ab6b841"><td class="memItemLeft" align="right" valign="top">float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a932b4856d89c58865e1f39ec5ab6b841">GetOutputTensorData</a> (unsigned int idx, const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;data)</td></tr>
3278<tr class="separator:a932b4856d89c58865e1f39ec5ab6b841"><td class="memSeparator" colspan="2">&#160;</td></tr>
3279<tr class="memitem:a40c8a268a9dc9dc910e348534d479f7a"><td class="memItemLeft" align="right" valign="top">constexpr const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a40c8a268a9dc9dc910e348534d479f7a">SampleDynamicBackendId</a> ()</td></tr>
3280<tr class="separator:a40c8a268a9dc9dc910e348534d479f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
3281<tr class="memitem:a8022a6869bffa6233fec784a471c1680"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a8022a6869bffa6233fec784a471c1680">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;compute)</td></tr>
3282<tr class="separator:a8022a6869bffa6233fec784a471c1680"><td class="memSeparator" colspan="2">&#160;</td></tr>
3283<tr class="memitem:a3c51506c471a4513dcc3364514d75f39"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a3c51506c471a4513dcc3364514d75f39">operator&gt;&gt;</a> (std::istream &amp;in, <a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;backend)</td></tr>
3284<tr class="separator:a3c51506c471a4513dcc3364514d75f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
3285</table><table class="memberdecls">
3286<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
3287Variables</h2></td></tr>
3288<tr class="memitem:abdcd184ed3bd648bb31d385040cafd5d"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> = 5U</td></tr>
3289<tr class="separator:abdcd184ed3bd648bb31d385040cafd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3290<tr class="memitem:a602ddc6408c3347ba4c1eba623003984"><td class="memItemLeft" align="right" valign="top">constexpr unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a602ddc6408c3347ba4c1eba623003984">LOWEST_CAPTURE_PERIOD</a> = 10000u</td></tr>
3291<tr class="memdesc:a602ddc6408c3347ba4c1eba623003984"><td class="mdescLeft">&#160;</td><td class="mdescRight">The lowest performance data capture interval we support is 10 miliseconds. <a href="#a602ddc6408c3347ba4c1eba623003984">More...</a><br /></td></tr>
3292<tr class="separator:a602ddc6408c3347ba4c1eba623003984"><td class="memSeparator" colspan="2">&#160;</td></tr>
3293<tr class="memitem:a43ecd194778b7653578044060ba8695e"><td class="memItemLeft" align="right" valign="top">constexpr std::size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a43ecd194778b7653578044060ba8695e">g_ProfilingEventCountHint</a> = 1024</td></tr>
3294<tr class="separator:a43ecd194778b7653578044060ba8695e"><td class="memSeparator" colspan="2">&#160;</td></tr>
3295<tr class="memitem:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a41794552ff67b0dad16de60f9b8e7d7c">g_WriteProfilingEventSequence</a> = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
3296<tr class="separator:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
3297<tr class="memitem:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#aacc0d11e271ebbfcff9d613dd17604aa">g_AggregateProfilingEventsByInference</a> = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td></tr>
3298<tr class="separator:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
3299<tr class="memitem:a6ce7e56eb10e440463f09eee8f213adc"><td class="memItemLeft" align="right" valign="top">constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a6ce7e56eb10e440463f09eee8f213adc">g_WriteReportToStdOutOnProfilerDestruction</a> = <a class="el" href="_ref_layer_tests_8cpp.xhtml#af3b727ae5a13ff472892ab8bda2eb1b5">false</a></td></tr>
3300<tr class="separator:a6ce7e56eb10e440463f09eee8f213adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
3301<tr class="memitem:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memItemLeft" align="right" valign="top">thread_local <a class="el" href="classarmnn_1_1_profiler.xhtml">Profiler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a680b729be51e88d93f2cbbdfeb5eaf4d">tl_Profiler</a> = nullptr</td></tr>
3302<tr class="separator:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
3303<tr class="memitem:a19994153bdbd7710f0af3973403bc4cc"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a> = 255.0f</td></tr>
3304<tr class="separator:a19994153bdbd7710f0af3973403bc4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
3305<tr class="memitem:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a> = 255.0f</td></tr>
3306<tr class="separator:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memSeparator" colspan="2">&#160;</td></tr>
3307<tr class="memitem:acd7f8820d124166a38c95bc8ad38811b"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> = 127.0f</td></tr>
3308<tr class="separator:acd7f8820d124166a38c95bc8ad38811b"><td class="memSeparator" colspan="2">&#160;</td></tr>
3309<tr class="memitem:a1465480794787d2278d3f0d2e6d887b4"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a> = 32767.0f</td></tr>
3310<tr class="separator:a1465480794787d2278d3f0d2e6d887b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
3311<tr class="memitem:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacearmnn.xhtml#a1a9a6dea47de10df8e3c76dd45df56fb">g_TestTolerance</a> = 0.000001f</td></tr>
3312<tr class="separator:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
3313</table>
3314<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
3315<div class="textblock"><p>Copyright (c) 2020 ARM Limited. </p>
3316<p><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a> is a drop in replacement for std::optional until we migrate to c++-17.</p>
3317<p>SPDX-License-Identifier: MIT</p>
3318<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
3319<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
3320<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
3321<p>Only a subset of the optional features are implemented that we intend to use in ArmNN. There are two distinct implementations here:</p>
3322<p>1, for normal constructable/destructable types and reference types 2, for reference types The std::optional features we support are:</p>
3323<ul>
3324<li>has_value() and operator bool() to tell if the optional has a value</li>
3325<li>value() returns a reference to the held object </li>
3326</ul>
3327</div><h2 class="groupheader">Typedef Documentation</h2>
3328<a id="a1854d9cda81304325664363c1fd0fb27"></a>
3329<h2 class="memtitle"><span class="permalink"><a href="#a1854d9cda81304325664363c1fd0fb27">&#9670;&nbsp;</a></span>BackendIdSet</h2>
3330
3331<div class="memitem">
3332<div class="memproto">
3333 <table class="memname">
3334 <tr>
3335 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a1854d9cda81304325664363c1fd0fb27">BackendIdSet</a> = std::unordered_set&lt;<a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&gt;</td>
3336 </tr>
3337 </table>
3338</div><div class="memdoc">
3339
3340<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00191">191</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
3341
3342</div>
3343</div>
3344<a id="ac858d91eedb7b4dba1bcd0aa760ab510"></a>
3345<h2 class="memtitle"><span class="permalink"><a href="#ac858d91eedb7b4dba1bcd0aa760ab510">&#9670;&nbsp;</a></span>BackendIdVector</h2>
3346
3347<div class="memitem">
3348<div class="memproto">
3349 <table class="memname">
3350 <tr>
3351 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ac858d91eedb7b4dba1bcd0aa760ab510">BackendIdVector</a> = std::vector&lt;<a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&gt;</td>
3352 </tr>
3353 </table>
3354</div><div class="memdoc">
3355
3356<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00190">190</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
3357
3358</div>
3359</div>
3360<a id="a9173495a61a0092b5f38b855f02c3585"></a>
3361<h2 class="memtitle"><span class="permalink"><a href="#a9173495a61a0092b5f38b855f02c3585">&#9670;&nbsp;</a></span>BackendsMap</h2>
3362
3363<div class="memitem">
3364<div class="memproto">
3365 <table class="memname">
3366 <tr>
3367 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> = std::map&lt;<a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>, std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a>&gt; &gt;</td>
3368 </tr>
3369 </table>
3370</div><div class="memdoc">
3371
3372<p class="definition">Definition at line <a class="el" href="_network_8hpp_source.xhtml#l00305">305</a> of file <a class="el" href="_network_8hpp_source.xhtml">Network.hpp</a>.</p>
3373
3374</div>
3375</div>
3376<a id="a20d2055c37fedf3f39db9facf2c8c697"></a>
3377<h2 class="memtitle"><span class="permalink"><a href="#a20d2055c37fedf3f39db9facf2c8c697">&#9670;&nbsp;</a></span>BaseFloat32ComparisonWorkload</h2>
3378
3379<div class="memitem">
3380<div class="memproto">
3381 <table class="memname">
3382 <tr>
3383 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a20d2055c37fedf3f39db9facf2c8c697">BaseFloat32ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3384 </tr>
3385 </table>
3386</div><div class="memdoc">
3387
3388<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00172">172</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3389
3390</div>
3391</div>
3392<a id="a9cbc0957cf0637cc3fd9702086117cc0"></a>
3393<h2 class="memtitle"><span class="permalink"><a href="#a9cbc0957cf0637cc3fd9702086117cc0">&#9670;&nbsp;</a></span>BaseUint8ComparisonWorkload</h2>
3394
3395<div class="memitem">
3396<div class="memproto">
3397 <table class="memname">
3398 <tr>
3399 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9cbc0957cf0637cc3fd9702086117cc0">BaseUint8ComparisonWorkload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3400 </tr>
3401 </table>
3402</div><div class="memdoc">
3403
3404<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00177">177</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3405
3406</div>
3407</div>
3408<a id="a280670a263dc4fd40491f6d0a2737f44"></a>
3409<h2 class="memtitle"><span class="permalink"><a href="#a280670a263dc4fd40491f6d0a2737f44">&#9670;&nbsp;</a></span>BindingPointInfo</h2>
3410
3411<div class="memitem">
3412<div class="memproto">
3413 <table class="memname">
3414 <tr>
3415 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a280670a263dc4fd40491f6d0a2737f44">BindingPointInfo</a> = std::pair&lt;<a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a>, <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a>&gt;</td>
3416 </tr>
3417 </table>
3418</div><div class="memdoc">
3419
3420<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.xhtml#l00146">146</a> of file <a class="el" href="_tensor_8hpp_source.xhtml">Tensor.hpp</a>.</p>
3421
3422</div>
3423</div>
3424<a id="ab539ef5a0c152536da71c8fcc065efb5"></a>
3425<h2 class="memtitle"><span class="permalink"><a href="#ab539ef5a0c152536da71c8fcc065efb5">&#9670;&nbsp;</a></span>BooleanWorkload</h2>
3426
3427<div class="memitem">
3428<div class="memproto">
3429 <table class="memname">
3430 <tr>
3431 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ab539ef5a0c152536da71c8fcc065efb5">BooleanWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>&gt;</td>
3432 </tr>
3433 </table>
3434</div><div class="memdoc">
3435
3436<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00167">167</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3437
3438</div>
3439</div>
3440<a id="a77e1ccec3acbb3dadba3fd4939508b32"></a>
3441<h2 class="memtitle"><span class="permalink"><a href="#a77e1ccec3acbb3dadba3fd4939508b32">&#9670;&nbsp;</a></span>ClGreaterFloat32Workload</h2>
3442
3443<div class="memitem">
3444<div class="memproto">
3445 <table class="memname">
3446 <tr>
3447 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a77e1ccec3acbb3dadba3fd4939508b32">ClGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.xhtml">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
3448 </tr>
3449 </table>
3450</div><div class="memdoc">
3451
3452<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.xhtml#l00031">31</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.xhtml">ClGreaterWorkload.hpp</a>.</p>
3453
3454</div>
3455</div>
3456<a id="a569ba573145851e753623be817b98e9b"></a>
3457<h2 class="memtitle"><span class="permalink"><a href="#a569ba573145851e753623be817b98e9b">&#9670;&nbsp;</a></span>ClGreaterUint8Workload</h2>
3458
3459<div class="memitem">
3460<div class="memproto">
3461 <table class="memname">
3462 <tr>
3463 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a569ba573145851e753623be817b98e9b">ClGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_cl_greater_workload.xhtml">ClGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
3464 </tr>
3465 </table>
3466</div><div class="memdoc">
3467
3468<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8hpp_source.xhtml#l00032">32</a> of file <a class="el" href="_cl_greater_workload_8hpp_source.xhtml">ClGreaterWorkload.hpp</a>.</p>
3469
3470</div>
3471</div>
3472<a id="a689de00cadd81b4e35b7448e4fbbc034"></a>
3473<h2 class="memtitle"><span class="permalink"><a href="#a689de00cadd81b4e35b7448e4fbbc034">&#9670;&nbsp;</a></span>CompiledBlobDeleter</h2>
3474
3475<div class="memitem">
3476<div class="memproto">
3477 <table class="memname">
3478 <tr>
3479 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt;void(const void*)&gt;</td>
3480 </tr>
3481 </table>
3482</div><div class="memdoc">
3483
3484<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml#l00017">17</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml">ISubgraphViewConverter.hpp</a>.</p>
3485
3486</div>
3487</div>
3488<a id="a7b4ac337ed307e0739e628d5b9883856"></a>
3489<h2 class="memtitle"><span class="permalink"><a href="#a7b4ac337ed307e0739e628d5b9883856">&#9670;&nbsp;</a></span>CompiledBlobPtr</h2>
3490
3491<div class="memitem">
3492<div class="memproto">
3493 <table class="memname">
3494 <tr>
3495 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a7b4ac337ed307e0739e628d5b9883856">CompiledBlobPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.xhtml#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a>&gt;</td>
3496 </tr>
3497 </table>
3498</div><div class="memdoc">
3499
3500<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml">ISubgraphViewConverter.hpp</a>.</p>
3501
3502</div>
3503</div>
3504<a id="a7863c179ff92feec660c48ab7b95ae55"></a>
3505<h2 class="memtitle"><span class="permalink"><a href="#a7863c179ff92feec660c48ab7b95ae55">&#9670;&nbsp;</a></span>ConcatDescriptor</h2>
3506
3507<div class="memitem">
3508<div class="memproto">
3509 <table class="memname">
3510 <tr>
3511 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a7863c179ff92feec660c48ab7b95ae55">ConcatDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a></td>
3512 </tr>
3513 </table>
3514</div><div class="memdoc">
3515
3516<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.xhtml#l00046">46</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.xhtml">DescriptorsFwd.hpp</a>.</p>
3517
3518</div>
3519</div>
3520<a id="ac6e86c1def7f674d3c4cb7f577874aa6"></a>
3521<h2 class="memtitle"><span class="permalink"><a href="#ac6e86c1def7f674d3c4cb7f577874aa6">&#9670;&nbsp;</a></span>Coordinates</h2>
3522
3523<div class="memitem">
3524<div class="memproto">
3525 <table class="memname">
3526 <tr>
3527 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">Coordinates</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
3528 </tr>
3529 </table>
3530</div><div class="memdoc">
3531
3532<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.xhtml#l00080">80</a> of file <a class="el" href="_internal_types_8hpp_source.xhtml">InternalTypes.hpp</a>.</p>
3533
3534</div>
3535</div>
3536<a id="a15f3ad9b5e4e3d46b0a6dda246a7bc28"></a>
3537<h2 class="memtitle"><span class="permalink"><a href="#a15f3ad9b5e4e3d46b0a6dda246a7bc28">&#9670;&nbsp;</a></span>DebugCallbackFunction</h2>
3538
3539<div class="memitem">
3540<div class="memproto">
3541 <table class="memname">
3542 <tr>
3543 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a15f3ad9b5e4e3d46b0a6dda246a7bc28">DebugCallbackFunction</a> = std::function&lt;void(<a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, unsigned int slotIndex, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a>* tensorHandle)&gt;</td>
3544 </tr>
3545 </table>
3546</div><div class="memdoc">
3547
3548<p>Define the type of callback for the Debug layer to call. </p>
3549<dl class="params"><dt>Parameters</dt><dd>
3550 <table class="params">
3551 <tr><td class="paramname">guid</td><td>- guid of layer connected to the input of the Debug layer </td></tr>
3552 <tr><td class="paramname">slotIndex</td><td>- index of the output slot connected to the input of the Debug layer </td></tr>
3553 <tr><td class="paramname">tensorHandle</td><td>- TensorHandle for the input tensor to the Debug layer </td></tr>
3554 </table>
3555 </dd>
3556</dl>
3557
3558<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00244">244</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
3559
3560</div>
3561</div>
3562<a id="a3647f60510bc8ddaced01c51b0ee8714"></a>
3563<h2 class="memtitle"><span class="permalink"><a href="#a3647f60510bc8ddaced01c51b0ee8714">&#9670;&nbsp;</a></span>DepthToSpaceDescriptor</h2>
3564
3565<div class="memitem">
3566<div class="memproto">
3567 <table class="memname">
3568 <tr>
3569 <td class="memname">typedef <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a></td>
3570 </tr>
3571 </table>
3572</div><div class="memdoc">
3573
3574<p>A DepthToSpaceDescriptor for the <a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml" title="This layer represents a DepthToSpace operation. ">DepthToSpaceLayer</a>. </p>
3575
3576<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.xhtml#l00834">834</a> of file <a class="el" href="_descriptors_8hpp_source.xhtml">Descriptors.hpp</a>.</p>
3577
3578</div>
3579</div>
3580<a id="a293695a94110c1a0eb77e29c22dce79a"></a>
3581<h2 class="memtitle"><span class="permalink"><a href="#a293695a94110c1a0eb77e29c22dce79a">&#9670;&nbsp;</a></span>Dimensions</h2>
3582
3583<div class="memitem">
3584<div class="memproto">
3585 <table class="memname">
3586 <tr>
3587 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a293695a94110c1a0eb77e29c22dce79a">Dimensions</a> = std::array&lt;unsigned int, <a class="el" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>&gt;</td>
3588 </tr>
3589 </table>
3590</div><div class="memdoc">
3591
3592<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.xhtml#l00081">81</a> of file <a class="el" href="_internal_types_8hpp_source.xhtml">InternalTypes.hpp</a>.</p>
3593
3594</div>
3595</div>
3596<a id="a754d43dc24a0fe36ecb3044d8f13a413"></a>
3597<h2 class="memtitle"><span class="permalink"><a href="#a754d43dc24a0fe36ecb3044d8f13a413">&#9670;&nbsp;</a></span>DynamicBackendPtr</h2>
3598
3599<div class="memitem">
3600<div class="memproto">
3601 <table class="memname">
3602 <tr>
3603 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a754d43dc24a0fe36ecb3044d8f13a413">DynamicBackendPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_dynamic_backend.xhtml">DynamicBackend</a>&gt;</td>
3604 </tr>
3605 </table>
3606</div><div class="memdoc">
3607
3608<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.xhtml#l00052">52</a> of file <a class="el" href="include_2armnn_2backends_2_dynamic_backend_8hpp_source.xhtml">DynamicBackend.hpp</a>.</p>
3609
3610</div>
3611</div>
3612<a id="a947e07902b1b5d98b57eeae34053146b"></a>
3613<h2 class="memtitle"><span class="permalink"><a href="#a947e07902b1b5d98b57eeae34053146b">&#9670;&nbsp;</a></span>FactoryId</h2>
3614
3615<div class="memitem">
3616<div class="memproto">
3617 <table class="memname">
3618 <tr>
3619 <td class="memname">typedef <a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> <a class="el" href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">FactoryId</a></td>
3620 </tr>
3621 </table>
3622</div><div class="memdoc">
3623
3624<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_cl_tensor_handle_factory_8cpp_source.xhtml">ClTensorHandleFactory.cpp</a>.</p>
3625
3626</div>
3627</div>
3628<a id="a827d59b5a779a8089017802172817f3c"></a>
3629<h2 class="memtitle"><span class="permalink"><a href="#a827d59b5a779a8089017802172817f3c">&#9670;&nbsp;</a></span>Float16ToFloat32Workload</h2>
3630
3631<div class="memitem">
3632<div class="memproto">
3633 <table class="memname">
3634 <tr>
3635 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a827d59b5a779a8089017802172817f3c">Float16ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3636 </tr>
3637 </table>
3638</div><div class="memdoc">
3639
3640<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00182">182</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3641
3642</div>
3643</div>
3644<a id="a6486138451112140f98516c0bee18615"></a>
3645<h2 class="memtitle"><span class="permalink"><a href="#a6486138451112140f98516c0bee18615">&#9670;&nbsp;</a></span>Float32ToFloat16Workload</h2>
3646
3647<div class="memitem">
3648<div class="memproto">
3649 <table class="memname">
3650 <tr>
3651 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a6486138451112140f98516c0bee18615">Float32ToFloat16Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>&gt;</td>
3652 </tr>
3653 </table>
3654</div><div class="memdoc">
3655
3656<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00187">187</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3657
3658</div>
3659</div>
3660<a id="a0493144f15b35804a133c9aa0b63fcc9"></a>
3661<h2 class="memtitle"><span class="permalink"><a href="#a0493144f15b35804a133c9aa0b63fcc9">&#9670;&nbsp;</a></span>Float32Workload</h2>
3662
3663<div class="memitem">
3664<div class="memproto">
3665 <table class="memname">
3666 <tr>
3667 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a0493144f15b35804a133c9aa0b63fcc9">Float32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3668 </tr>
3669 </table>
3670</div><div class="memdoc">
3671
3672<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00158">158</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3673
3674</div>
3675</div>
3676<a id="abaedcfd0ae08790c03bfe8ba7586dd84"></a>
3677<h2 class="memtitle"><span class="permalink"><a href="#abaedcfd0ae08790c03bfe8ba7586dd84">&#9670;&nbsp;</a></span>FloatWorkload</h2>
3678
3679<div class="memitem">
3680<div class="memproto">
3681 <table class="memname">
3682 <tr>
3683 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#abaedcfd0ae08790c03bfe8ba7586dd84">FloatWorkload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
3684 </tr>
3685 </table>
3686</div><div class="memdoc">
3687
3688<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00155">155</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3689
3690</div>
3691</div>
3692<a id="a0f38fa92b2468d5378258a2b074c1a31"></a>
3693<h2 class="memtitle"><span class="permalink"><a href="#a0f38fa92b2468d5378258a2b074c1a31">&#9670;&nbsp;</a></span>Half</h2>
3694
3695<div class="memitem">
3696<div class="memproto">
3697 <table class="memname">
3698 <tr>
3699 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td>
3700 </tr>
3701 </table>
3702</div><div class="memdoc">
3703
3704<p class="definition">Definition at line <a class="el" href="_half_8hpp_source.xhtml#l00016">16</a> of file <a class="el" href="_half_8hpp_source.xhtml">Half.hpp</a>.</p>
3705
3706</div>
3707</div>
3708<a id="a65a0ad0a7b807e70295481a7b9cb93ac"></a>
3709<h2 class="memtitle"><span class="permalink"><a href="#a65a0ad0a7b807e70295481a7b9cb93ac">&#9670;&nbsp;</a></span>IBackendContextUniquePtr</h2>
3710
3711<div class="memitem">
3712<div class="memproto">
3713 <table class="memname">
3714 <tr>
3715 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a65a0ad0a7b807e70295481a7b9cb93ac">IBackendContextUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend_context.xhtml">IBackendContext</a>&gt;</td>
3716 </tr>
3717 </table>
3718</div><div class="memdoc">
3719
3720<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.xhtml#l00030">30</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_context_8hpp_source.xhtml">IBackendContext.hpp</a>.</p>
3721
3722</div>
3723</div>
3724<a id="ade0af9dacaa52cafdd701bef2e901c77"></a>
3725<h2 class="memtitle"><span class="permalink"><a href="#ade0af9dacaa52cafdd701bef2e901c77">&#9670;&nbsp;</a></span>IBackendInternalUniquePtr</h2>
3726
3727<div class="memitem">
3728<div class="memproto">
3729 <table class="memname">
3730 <tr>
3731 <td class="memname">typedef std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_i_backend_internal.xhtml">IBackendInternal</a> &gt; <a class="el" href="namespacearmnn.xhtml#ade0af9dacaa52cafdd701bef2e901c77">IBackendInternalUniquePtr</a></td>
3732 </tr>
3733 </table>
3734</div><div class="memdoc">
3735
3736<p class="definition">Definition at line <a class="el" href="_backend_registry_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_backend_registry_8hpp_source.xhtml">BackendRegistry.hpp</a>.</p>
3737
3738</div>
3739</div>
3740<a id="ae18caa7ee6287aa7f8c2a5ce6bc92382"></a>
3741<h2 class="memtitle"><span class="permalink"><a href="#ae18caa7ee6287aa7f8c2a5ce6bc92382">&#9670;&nbsp;</a></span>IBackendSharedPtr</h2>
3742
3743<div class="memitem">
3744<div class="memproto">
3745 <table class="memname">
3746 <tr>
3747 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ae18caa7ee6287aa7f8c2a5ce6bc92382">IBackendSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a>&gt;</td>
3748 </tr>
3749 </table>
3750</div><div class="memdoc">
3751
3752<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00157">157</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
3753
3754</div>
3755</div>
3756<a id="a5a665483e56a688e9f8180accdf72d80"></a>
3757<h2 class="memtitle"><span class="permalink"><a href="#a5a665483e56a688e9f8180accdf72d80">&#9670;&nbsp;</a></span>IBackendUniquePtr</h2>
3758
3759<div class="memitem">
3760<div class="memproto">
3761 <table class="memname">
3762 <tr>
3763 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a5a665483e56a688e9f8180accdf72d80">IBackendUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a>, void(*)(<a class="el" href="classarmnn_1_1_i_backend.xhtml">IBackend</a>* backend)&gt;</td>
3764 </tr>
3765 </table>
3766</div><div class="memdoc">
3767
3768<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00158">158</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
3769
3770</div>
3771</div>
3772<a id="a2d3a708a26ac6d77bf8f15506e89a25a"></a>
3773<h2 class="memtitle"><span class="permalink"><a href="#a2d3a708a26ac6d77bf8f15506e89a25a">&#9670;&nbsp;</a></span>IGpuAccTunedParametersPtr</h2>
3774
3775<div class="memitem">
3776<div class="memproto">
3777 <table class="memname">
3778 <tr>
3779 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a2d3a708a26ac6d77bf8f15506e89a25a">IGpuAccTunedParametersPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_gpu_acc_tuned_parameters.xhtml">IGpuAccTunedParameters</a>&gt;</td>
3780 </tr>
3781 </table>
3782</div><div class="memdoc">
3783
3784<p>The following API is replaced by the backend options API. </p>
3785
3786<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.xhtml#l00170">170</a> of file <a class="el" href="_i_runtime_8hpp_source.xhtml">IRuntime.hpp</a>.</p>
3787
3788</div>
3789</div>
3790<a id="a11fa919c11fe46aad613b2e960fcfe90"></a>
3791<h2 class="memtitle"><span class="permalink"><a href="#a11fa919c11fe46aad613b2e960fcfe90">&#9670;&nbsp;</a></span>ILayerSupportSharedPtr</h2>
3792
3793<div class="memitem">
3794<div class="memproto">
3795 <table class="memname">
3796 <tr>
3797 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a11fa919c11fe46aad613b2e960fcfe90">ILayerSupportSharedPtr</a> = std::shared_ptr&lt;<a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a>&gt;</td>
3798 </tr>
3799 </table>
3800</div><div class="memdoc">
3801
3802<p class="definition">Definition at line <a class="el" href="_i_layer_support_8hpp_source.xhtml#l00379">379</a> of file <a class="el" href="_i_layer_support_8hpp_source.xhtml">ILayerSupport.hpp</a>.</p>
3803
3804</div>
3805</div>
3806<a id="a12bff6d51d63dac1375c89bc8415dc46"></a>
3807<h2 class="memtitle"><span class="permalink"><a href="#a12bff6d51d63dac1375c89bc8415dc46">&#9670;&nbsp;</a></span>IMemoryManagerUniquePtr</h2>
3808
3809<div class="memitem">
3810<div class="memproto">
3811 <table class="memname">
3812 <tr>
3813 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a12bff6d51d63dac1375c89bc8415dc46">IMemoryManagerUniquePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_memory_manager.xhtml">IMemoryManager</a>&gt;</td>
3814 </tr>
3815 </table>
3816</div><div class="memdoc">
3817
3818<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.xhtml#l00024">24</a> of file <a class="el" href="include_2armnn_2backends_2_i_memory_manager_8hpp_source.xhtml">IMemoryManager.hpp</a>.</p>
3819
3820</div>
3821</div>
3822<a id="ace74f6f9feb95a964a49d79458232703"></a>
3823<h2 class="memtitle"><span class="permalink"><a href="#ace74f6f9feb95a964a49d79458232703">&#9670;&nbsp;</a></span>INetworkPtr</h2>
3824
3825<div class="memitem">
3826<div class="memproto">
3827 <table class="memname">
3828 <tr>
3829 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a>* network)&gt;</td>
3830 </tr>
3831 </table>
3832</div><div class="memdoc">
3833
3834<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00101">101</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
3835
3836</div>
3837</div>
3838<a id="a41119e261eec9343888d2ceab1e4999a"></a>
3839<h2 class="memtitle"><span class="permalink"><a href="#a41119e261eec9343888d2ceab1e4999a">&#9670;&nbsp;</a></span>INetworkQuantizerPtr</h2>
3840
3841<div class="memitem">
3842<div class="memproto">
3843 <table class="memname">
3844 <tr>
3845 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> = std::unique_ptr&lt;class <a class="el" href="classarmnn_1_1_i_network_quantizer.xhtml">INetworkQuantizer</a>, void(*)(<a class="el" href="classarmnn_1_1_i_network_quantizer.xhtml">INetworkQuantizer</a>* quantizer)&gt;</td>
3846 </tr>
3847 </table>
3848</div><div class="memdoc">
3849
3850<p class="definition">Definition at line <a class="el" href="_i_network_quantizer_8hpp_source.xhtml#l00029">29</a> of file <a class="el" href="_i_network_quantizer_8hpp_source.xhtml">INetworkQuantizer.hpp</a>.</p>
3851
3852</div>
3853</div>
3854<a id="a2231ac018fe2c465f2d42fef597d67e7"></a>
3855<h2 class="memtitle"><span class="permalink"><a href="#a2231ac018fe2c465f2d42fef597d67e7">&#9670;&nbsp;</a></span>InputQueueDescriptor</h2>
3856
3857<div class="memitem">
3858<div class="memproto">
3859 <table class="memname">
3860 <tr>
3861 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a2231ac018fe2c465f2d42fef597d67e7">InputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a></td>
3862 </tr>
3863 </table>
3864</div><div class="memdoc">
3865
3866<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00063">63</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
3867
3868</div>
3869</div>
3870<a id="aa01bce88f89975a5a031db4cc8861527"></a>
3871<h2 class="memtitle"><span class="permalink"><a href="#aa01bce88f89975a5a031db4cc8861527">&#9670;&nbsp;</a></span>InputTensors</h2>
3872
3873<div class="memitem">
3874<div class="memproto">
3875 <table class="memname">
3876 <tr>
3877 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a>&gt; &gt;</td>
3878 </tr>
3879 </table>
3880</div><div class="memdoc">
3881
3882<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.xhtml#l00225">225</a> of file <a class="el" href="_tensor_8hpp_source.xhtml">Tensor.hpp</a>.</p>
3883
3884</div>
3885</div>
3886<a id="a86e4b37c7c48cf5fbc5e99ccc6fd50b7"></a>
3887<h2 class="memtitle"><span class="permalink"><a href="#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">&#9670;&nbsp;</a></span>instead</h2>
3888
3889<div class="memitem">
3890<div class="memproto">
3891 <table class="memname">
3892 <tr>
3893 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">instead</a> = <a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a></td>
3894 </tr>
3895 </table>
3896</div><div class="memdoc">
3897
3898<p class="definition">Definition at line <a class="el" href="_subgraph_view_8hpp_source.xhtml#l00102">102</a> of file <a class="el" href="_subgraph_view_8hpp_source.xhtml">SubgraphView.hpp</a>.</p>
3899
3900</div>
3901</div>
3902<a id="a3e4b88b993c90b274e0bd268c35d798e"></a>
3903<h2 class="memtitle"><span class="permalink"><a href="#a3e4b88b993c90b274e0bd268c35d798e">&#9670;&nbsp;</a></span>Int32Workload</h2>
3904
3905<div class="memitem">
3906<div class="memproto">
3907 <table class="memname">
3908 <tr>
3909 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a3e4b88b993c90b274e0bd268c35d798e">Int32Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>&gt;</td>
3910 </tr>
3911 </table>
3912</div><div class="memdoc">
3913
3914<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00164">164</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
3915
3916</div>
3917</div>
3918<a id="a674efcf6cbdb9e831d653ff0e821fb38"></a>
3919<h2 class="memtitle"><span class="permalink"><a href="#a674efcf6cbdb9e831d653ff0e821fb38">&#9670;&nbsp;</a></span>IOptimizedNetworkPtr</h2>
3920
3921<div class="memitem">
3922<div class="memproto">
3923 <table class="memname">
3924 <tr>
3925 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>, void(*)(<a class="el" href="classarmnn_1_1_i_optimized_network.xhtml">IOptimizedNetwork</a>* network)&gt;</td>
3926 </tr>
3927 </table>
3928</div><div class="memdoc">
3929
3930<p class="definition">Definition at line <a class="el" href="_i_network_8hpp_source.xhtml#l00566">566</a> of file <a class="el" href="_i_network_8hpp_source.xhtml">INetwork.hpp</a>.</p>
3931
3932</div>
3933</div>
3934<a id="a150468a02bd7b2d2d061c4aaaee939f0"></a>
3935<h2 class="memtitle"><span class="permalink"><a href="#a150468a02bd7b2d2d061c4aaaee939f0">&#9670;&nbsp;</a></span>IRuntimePtr</h2>
3936
3937<div class="memitem">
3938<div class="memproto">
3939 <table class="memname">
3940 <tr>
3941 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a150468a02bd7b2d2d061c4aaaee939f0">IRuntimePtr</a> = std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>, void(*)(<a class="el" href="classarmnn_1_1_i_runtime.xhtml">IRuntime</a>* runtime)&gt;</td>
3942 </tr>
3943 </table>
3944</div><div class="memdoc">
3945
3946<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.xhtml#l00024">24</a> of file <a class="el" href="_i_runtime_8hpp_source.xhtml">IRuntime.hpp</a>.</p>
3947
3948</div>
3949</div>
3950<a id="ab8cf8f9fb6792e654c2d8d8382f6f01b"></a>
3951<h2 class="memtitle"><span class="permalink"><a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">&#9670;&nbsp;</a></span>LayerBindingId</h2>
3952
3953<div class="memitem">
3954<div class="memproto">
3955 <table class="memname">
3956 <tr>
3957 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td>
3958 </tr>
3959 </table>
3960</div><div class="memdoc">
3961
3962<p>Type of identifiers for bindable layers (inputs, outputs). </p>
3963
3964<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00171">171</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
3965
3966</div>
3967</div>
3968<a id="afad4088a9a058114ee5f87246f87bf49"></a>
3969<h2 class="memtitle"><span class="permalink"><a href="#afad4088a9a058114ee5f87246f87bf49">&#9670;&nbsp;</a></span>LayerGuid</h2>
3970
3971<div class="memitem">
3972<div class="memproto">
3973 <table class="memname">
3974 <tr>
3975 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> = <a class="el" href="classarmnn_1_1profiling_1_1_profiling_guid.xhtml">profiling::ProfilingGuid</a></td>
3976 </tr>
3977 </table>
3978</div><div class="memdoc">
3979
3980<p>Define LayerGuid type. </p>
3981
3982<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00236">236</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
3983
3984</div>
3985</div>
3986<a id="a419086ecb4dc9d0f9e5d8933c87e2ea2"></a>
3987<h2 class="memtitle"><span class="permalink"><a href="#a419086ecb4dc9d0f9e5d8933c87e2ea2">&#9670;&nbsp;</a></span>LayerPriority</h2>
3988
3989<div class="memitem">
3990<div class="memproto">
3991 <table class="memname">
3992 <tr>
3993 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td>
3994 </tr>
3995 </table>
3996</div><div class="memdoc">
3997
3998<p class="definition">Definition at line <a class="el" href="_layer_8hpp_source.xhtml#l00207">207</a> of file <a class="el" href="_layer_8hpp_source.xhtml">Layer.hpp</a>.</p>
3999
4000</div>
4001</div>
4002<a id="a6b5db6cc9aad8ec0ac7b14f859aacdab"></a>
4003<h2 class="memtitle"><span class="permalink"><a href="#a6b5db6cc9aad8ec0ac7b14f859aacdab">&#9670;&nbsp;</a></span>LayerTypeOf</h2>
4004
4005<div class="memitem">
4006<div class="memproto">
4007 <table class="memname">
4008 <tr>
4009 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a6b5db6cc9aad8ec0ac7b14f859aacdab">LayerTypeOf</a> = typename <a class="el" href="structarmnn_1_1_layer_type_of_impl.xhtml">LayerTypeOfImpl</a>&lt;Type&gt;::Type</td>
4010 </tr>
4011 </table>
4012</div><div class="memdoc">
4013
4014<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00074">74</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
4015
4016</div>
4017</div>
4018<a id="ac14705405cbcdd580df613de6766fe65"></a>
4019<h2 class="memtitle"><span class="permalink"><a href="#ac14705405cbcdd580df613de6766fe65">&#9670;&nbsp;</a></span>LogSoftmaxDescriptor</h2>
4020
4021<div class="memitem">
4022<div class="memproto">
4023 <table class="memname">
4024 <tr>
4025 <td class="memname">typedef <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> <a class="el" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a></td>
4026 </tr>
4027 </table>
4028</div><div class="memdoc">
4029
4030<p>A LogSoftmaxDescriptor for the <a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml" title="This layer represents a log softmax operation. ">LogSoftmaxLayer</a>. </p>
4031
4032<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.xhtml#l00142">142</a> of file <a class="el" href="_descriptors_8hpp_source.xhtml">Descriptors.hpp</a>.</p>
4033
4034</div>
4035</div>
4036<a id="a5b05f3b7208ec7cea3338e30057c0bac"></a>
4037<h2 class="memtitle"><span class="permalink"><a href="#a5b05f3b7208ec7cea3338e30057c0bac">&#9670;&nbsp;</a></span>MemorySourceFlags</h2>
4038
4039<div class="memitem">
4040<div class="memproto">
4041 <table class="memname">
4042 <tr>
4043 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td>
4044 </tr>
4045 </table>
4046</div><div class="memdoc">
4047
4048<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_memory_sources_8hpp_source.xhtml">MemorySources.hpp</a>.</p>
4049
4050</div>
4051</div>
4052<a id="a003d213dd28b0b8c0f26fbf268ccb975"></a>
4053<h2 class="memtitle"><span class="permalink"><a href="#a003d213dd28b0b8c0f26fbf268ccb975">&#9670;&nbsp;</a></span>MergerDescriptor</h2>
4054
4055<div class="memitem">
4056<div class="memproto">
4057 <table class="memname">
4058 <tr>
4059 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a003d213dd28b0b8c0f26fbf268ccb975">MergerDescriptor</a> = <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a></td>
4060 </tr>
4061 </table>
4062</div><div class="memdoc">
4063
4064<p>MergerDescriptor is deprecated, use ConcatDescriptor instead. </p>
4065
4066<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.xhtml#l00050">50</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.xhtml">DescriptorsFwd.hpp</a>.</p>
4067
4068</div>
4069</div>
4070<a id="a308ba160745ba35e1de8d698d0139eb4"></a>
4071<h2 class="memtitle"><span class="permalink"><a href="#a308ba160745ba35e1de8d698d0139eb4">&#9670;&nbsp;</a></span>MergerQueueDescriptor</h2>
4072
4073<div class="memitem">
4074<div class="memproto">
4075 <table class="memname">
4076 <tr>
4077 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a308ba160745ba35e1de8d698d0139eb4">MergerQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a></td>
4078 </tr>
4079 </table>
4080</div><div class="memdoc">
4081
4082<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00121">121</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
4083
4084</div>
4085</div>
4086<a id="a997e96288bdb106c922202e3f33d5d7b"></a>
4087<h2 class="memtitle"><span class="permalink"><a href="#a997e96288bdb106c922202e3f33d5d7b">&#9670;&nbsp;</a></span>MinMaxRange</h2>
4088
4089<div class="memitem">
4090<div class="memproto">
4091 <table class="memname">
4092 <tr>
4093 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt;float, float&gt;</td>
4094 </tr>
4095 </table>
4096</div><div class="memdoc">
4097
4098<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00027">27</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
4099
4100</div>
4101</div>
4102<a id="a061aafb62b3769f55369845c3990ec7a"></a>
4103<h2 class="memtitle"><span class="permalink"><a href="#a061aafb62b3769f55369845c3990ec7a">&#9670;&nbsp;</a></span>MinMaxRangeMap</h2>
4104
4105<div class="memitem">
4106<div class="memproto">
4107 <table class="memname">
4108 <tr>
4109 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a061aafb62b3769f55369845c3990ec7a">MinMaxRangeMap</a> = std::unordered_map&lt;<a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>, <a class="el" href="namespacearmnn.xhtml#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a>&gt;</td>
4110 </tr>
4111 </table>
4112</div><div class="memdoc">
4113
4114<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00029">29</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
4115
4116</div>
4117</div>
4118<a id="ac757baefa4b72b54c38f713f86418f8a"></a>
4119<h2 class="memtitle"><span class="permalink"><a href="#ac757baefa4b72b54c38f713f86418f8a">&#9670;&nbsp;</a></span>MinMaxRanges</h2>
4120
4121<div class="memitem">
4122<div class="memproto">
4123 <table class="memname">
4124 <tr>
4125 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ac757baefa4b72b54c38f713f86418f8a">MinMaxRanges</a> = std::vector&lt;<a class="el" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a>&gt;</td>
4126 </tr>
4127 </table>
4128</div><div class="memdoc">
4129
4130<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
4131
4132</div>
4133</div>
4134<a id="a18b8b3bd9e39c84e36ab560978ab64c7"></a>
4135<h2 class="memtitle"><span class="permalink"><a href="#a18b8b3bd9e39c84e36ab560978ab64c7">&#9670;&nbsp;</a></span>NeonGreaterFloat32Workload</h2>
4136
4137<div class="memitem">
4138<div class="memproto">
4139 <table class="memname">
4140 <tr>
4141 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a18b8b3bd9e39c84e36ab560978ab64c7">NeonGreaterFloat32Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.xhtml">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4142 </tr>
4143 </table>
4144</div><div class="memdoc">
4145
4146<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.xhtml">NeonGreaterWorkload.hpp</a>.</p>
4147
4148</div>
4149</div>
4150<a id="a9b0bb8592cd6e6cb693d305825fae448"></a>
4151<h2 class="memtitle"><span class="permalink"><a href="#a9b0bb8592cd6e6cb693d305825fae448">&#9670;&nbsp;</a></span>NeonGreaterUint8Workload</h2>
4152
4153<div class="memitem">
4154<div class="memproto">
4155 <table class="memname">
4156 <tr>
4157 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9b0bb8592cd6e6cb693d305825fae448">NeonGreaterUint8Workload</a> = <a class="el" href="classarmnn_1_1_neon_greater_workload.xhtml">NeonGreaterWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4158 </tr>
4159 </table>
4160</div><div class="memdoc">
4161
4162<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_neon_greater_workload_8hpp_source.xhtml">NeonGreaterWorkload.hpp</a>.</p>
4163
4164</div>
4165</div>
4166<a id="a83015160d8c67d5d77735eb0d4033d9a"></a>
4167<h2 class="memtitle"><span class="permalink"><a href="#a83015160d8c67d5d77735eb0d4033d9a">&#9670;&nbsp;</a></span>NetworkId</h2>
4168
4169<div class="memitem">
4170<div class="memproto">
4171 <table class="memname">
4172 <tr>
4173 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td>
4174 </tr>
4175 </table>
4176</div><div class="memdoc">
4177
4178<p class="definition">Definition at line <a class="el" href="_i_runtime_8hpp_source.xhtml#l00019">19</a> of file <a class="el" href="_i_runtime_8hpp_source.xhtml">IRuntime.hpp</a>.</p>
4179
4180</div>
4181</div>
4182<a id="a9b8e5a95f8c061bbbcdb036915dcb61a"></a>
4183<h2 class="memtitle"><span class="permalink"><a href="#a9b8e5a95f8c061bbbcdb036915dcb61a">&#9670;&nbsp;</a></span>OffsetScalePair</h2>
4184
4185<div class="memitem">
4186<div class="memproto">
4187 <table class="memname">
4188 <tr>
4189 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt;float, int&gt;</td>
4190 </tr>
4191 </table>
4192</div><div class="memdoc">
4193
4194<p class="definition">Definition at line <a class="el" href="_network_quantization_scheme_8hpp_source.xhtml#l00016">16</a> of file <a class="el" href="_network_quantization_scheme_8hpp_source.xhtml">NetworkQuantizationScheme.hpp</a>.</p>
4195
4196</div>
4197</div>
4198<a id="a37a1a6b381ccc76df203fee023234996"></a>
4199<h2 class="memtitle"><span class="permalink"><a href="#a37a1a6b381ccc76df203fee023234996">&#9670;&nbsp;</a></span>OutputQueueDescriptor</h2>
4200
4201<div class="memitem">
4202<div class="memproto">
4203 <table class="memname">
4204 <tr>
4205 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a37a1a6b381ccc76df203fee023234996">OutputQueueDescriptor</a> = <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a></td>
4206 </tr>
4207 </table>
4208</div><div class="memdoc">
4209
4210<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.xhtml#l00064">64</a> of file <a class="el" href="_workload_data_8hpp_source.xhtml">WorkloadData.hpp</a>.</p>
4211
4212</div>
4213</div>
4214<a id="a8f091a512915d1cb29a4ebf13dfc53ea"></a>
4215<h2 class="memtitle"><span class="permalink"><a href="#a8f091a512915d1cb29a4ebf13dfc53ea">&#9670;&nbsp;</a></span>OutputTensors</h2>
4216
4217<div class="memitem">
4218<div class="memproto">
4219 <table class="memname">
4220 <tr>
4221 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a8f091a512915d1cb29a4ebf13dfc53ea">OutputTensors</a> = std::vector&lt;std::pair&lt;<a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>, class <a class="el" href="classarmnn_1_1_tensor.xhtml">Tensor</a>&gt; &gt;</td>
4222 </tr>
4223 </table>
4224</div><div class="memdoc">
4225
4226<p class="definition">Definition at line <a class="el" href="_tensor_8hpp_source.xhtml#l00226">226</a> of file <a class="el" href="_tensor_8hpp_source.xhtml">Tensor.hpp</a>.</p>
4227
4228</div>
4229</div>
4230<a id="a8c42c6647e31ebe525aeba878d133e45"></a>
4231<h2 class="memtitle"><span class="permalink"><a href="#a8c42c6647e31ebe525aeba878d133e45">&#9670;&nbsp;</a></span>ParameterStringifyFunction</h2>
4232
4233<div class="memitem">
4234<div class="memproto">
4235 <table class="memname">
4236 <tr>
4237 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a8c42c6647e31ebe525aeba878d133e45">ParameterStringifyFunction</a> = std::function&lt;void(const std::string&amp; name, const std::string&amp; value)&gt;</td>
4238 </tr>
4239 </table>
4240</div><div class="memdoc">
4241
4242<p class="definition">Definition at line <a class="el" href="_serialize_layer_parameters_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_serialize_layer_parameters_8hpp_source.xhtml">SerializeLayerParameters.hpp</a>.</p>
4243
4244</div>
4245</div>
4246<a id="ae73bf7cb78cc552c5511431b0d583f14"></a>
4247<h2 class="memtitle"><span class="permalink"><a href="#ae73bf7cb78cc552c5511431b0d583f14">&#9670;&nbsp;</a></span>PreCompiledObjectDeleter</h2>
4248
4249<div class="memitem">
4250<div class="memproto">
4251 <table class="memname">
4252 <tr>
4253 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt;void(const void*)&gt;</td>
4254 </tr>
4255 </table>
4256</div><div class="memdoc">
4257
4258<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.xhtml#l00019">19</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.xhtml">PreCompiledLayer.hpp</a>.</p>
4259
4260</div>
4261</div>
4262<a id="ae3bff3986cb5a50637c9b3238d821f54"></a>
4263<h2 class="memtitle"><span class="permalink"><a href="#ae3bff3986cb5a50637c9b3238d821f54">&#9670;&nbsp;</a></span>PreCompiledObjectPtr</h2>
4264
4265<div class="memitem">
4266<div class="memproto">
4267 <table class="memname">
4268 <tr>
4269 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ae3bff3986cb5a50637c9b3238d821f54">PreCompiledObjectPtr</a> = std::unique_ptr&lt;void, <a class="el" href="namespacearmnn.xhtml#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a>&gt;</td>
4270 </tr>
4271 </table>
4272</div><div class="memdoc">
4273
4274<p class="definition">Definition at line <a class="el" href="_pre_compiled_layer_8hpp_source.xhtml#l00020">20</a> of file <a class="el" href="_pre_compiled_layer_8hpp_source.xhtml">PreCompiledLayer.hpp</a>.</p>
4275
4276</div>
4277</div>
4278<a id="a7a9d365fbb868d53e67c4cdfdbf9cf7e"></a>
4279<h2 class="memtitle"><span class="permalink"><a href="#a7a9d365fbb868d53e67c4cdfdbf9cf7e">&#9670;&nbsp;</a></span>RefAdditionWorkload</h2>
4280
4281<div class="memitem">
4282<div class="memproto">
4283 <table class="memname">
4284 <tr>
4285 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a7a9d365fbb868d53e67c4cdfdbf9cf7e">RefAdditionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;std::plus&lt;float&gt;, <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a5b84f797c82a1ad494549330af517ad5">StringMapping::RefAdditionWorkload_Execute</a>&gt;</td>
4286 </tr>
4287 </table>
4288</div><div class="memdoc">
4289
4290<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00041">41</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4291
4292</div>
4293</div>
4294<a id="ab51075960a6cf82a8bb6ee81c9efa97d"></a>
4295<h2 class="memtitle"><span class="permalink"><a href="#ab51075960a6cf82a8bb6ee81c9efa97d">&#9670;&nbsp;</a></span>RefDebugBFloat16Workload</h2>
4296
4297<div class="memitem">
4298<div class="memproto">
4299 <table class="memname">
4300 <tr>
4301 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ab51075960a6cf82a8bb6ee81c9efa97d">RefDebugBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>&gt;</td>
4302 </tr>
4303 </table>
4304</div><div class="memdoc">
4305
4306<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00040">40</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4307
4308</div>
4309</div>
4310<a id="ac8d7aa6e66fb59a839833b160f619228"></a>
4311<h2 class="memtitle"><span class="permalink"><a href="#ac8d7aa6e66fb59a839833b160f619228">&#9670;&nbsp;</a></span>RefDebugFloat16Workload</h2>
4312
4313<div class="memitem">
4314<div class="memproto">
4315 <table class="memname">
4316 <tr>
4317 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ac8d7aa6e66fb59a839833b160f619228">RefDebugFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4318 </tr>
4319 </table>
4320</div><div class="memdoc">
4321
4322<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00041">41</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4323
4324</div>
4325</div>
4326<a id="ad194629946077375dcce05b2449334c8"></a>
4327<h2 class="memtitle"><span class="permalink"><a href="#ad194629946077375dcce05b2449334c8">&#9670;&nbsp;</a></span>RefDebugFloat32Workload</h2>
4328
4329<div class="memitem">
4330<div class="memproto">
4331 <table class="memname">
4332 <tr>
4333 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ad194629946077375dcce05b2449334c8">RefDebugFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4334 </tr>
4335 </table>
4336</div><div class="memdoc">
4337
4338<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00042">42</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4339
4340</div>
4341</div>
4342<a id="a44ab486f2a7728d75bbf52ffa1025ab5"></a>
4343<h2 class="memtitle"><span class="permalink"><a href="#a44ab486f2a7728d75bbf52ffa1025ab5">&#9670;&nbsp;</a></span>RefDebugQAsymmS8Workload</h2>
4344
4345<div class="memitem">
4346<div class="memproto">
4347 <table class="memname">
4348 <tr>
4349 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a44ab486f2a7728d75bbf52ffa1025ab5">RefDebugQAsymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a>&gt;</td>
4350 </tr>
4351 </table>
4352</div><div class="memdoc">
4353
4354<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00044">44</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4355
4356</div>
4357</div>
4358<a id="a0c1df21c99a094d2f078ca90047a73ff"></a>
4359<h2 class="memtitle"><span class="permalink"><a href="#a0c1df21c99a094d2f078ca90047a73ff">&#9670;&nbsp;</a></span>RefDebugQAsymmU8Workload</h2>
4360
4361<div class="memitem">
4362<div class="memproto">
4363 <table class="memname">
4364 <tr>
4365 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a0c1df21c99a094d2f078ca90047a73ff">RefDebugQAsymmU8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4366 </tr>
4367 </table>
4368</div><div class="memdoc">
4369
4370<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00043">43</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4371
4372</div>
4373</div>
4374<a id="ae6d1d064ec7d33b2cc5bcc8afafbe193"></a>
4375<h2 class="memtitle"><span class="permalink"><a href="#ae6d1d064ec7d33b2cc5bcc8afafbe193">&#9670;&nbsp;</a></span>RefDebugQSymmS16Workload</h2>
4376
4377<div class="memitem">
4378<div class="memproto">
4379 <table class="memname">
4380 <tr>
4381 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ae6d1d064ec7d33b2cc5bcc8afafbe193">RefDebugQSymmS16Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4382 </tr>
4383 </table>
4384</div><div class="memdoc">
4385
4386<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00045">45</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4387
4388</div>
4389</div>
4390<a id="ad607a96fafba334ba5bde946947dd0af"></a>
4391<h2 class="memtitle"><span class="permalink"><a href="#ad607a96fafba334ba5bde946947dd0af">&#9670;&nbsp;</a></span>RefDebugQSymmS8Workload</h2>
4392
4393<div class="memitem">
4394<div class="memproto">
4395 <table class="memname">
4396 <tr>
4397 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ad607a96fafba334ba5bde946947dd0af">RefDebugQSymmS8Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a>&gt;</td>
4398 </tr>
4399 </table>
4400</div><div class="memdoc">
4401
4402<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00046">46</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4403
4404</div>
4405</div>
4406<a id="a2b2b0a60cbb51bf3eb9bd2899aee2c86"></a>
4407<h2 class="memtitle"><span class="permalink"><a href="#a2b2b0a60cbb51bf3eb9bd2899aee2c86">&#9670;&nbsp;</a></span>RefDebugSigned32Workload</h2>
4408
4409<div class="memitem">
4410<div class="memproto">
4411 <table class="memname">
4412 <tr>
4413 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a2b2b0a60cbb51bf3eb9bd2899aee2c86">RefDebugSigned32Workload</a> = <a class="el" href="classarmnn_1_1_ref_debug_workload.xhtml">RefDebugWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a>&gt;</td>
4414 </tr>
4415 </table>
4416</div><div class="memdoc">
4417
4418<p class="definition">Definition at line <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00047">47</a> of file <a class="el" href="_ref_debug_workload_8hpp_source.xhtml">RefDebugWorkload.hpp</a>.</p>
4419
4420</div>
4421</div>
4422<a id="a5c3a2aa3adc87d79164914b63f27dc25"></a>
4423<h2 class="memtitle"><span class="permalink"><a href="#a5c3a2aa3adc87d79164914b63f27dc25">&#9670;&nbsp;</a></span>RefDivisionWorkload</h2>
4424
4425<div class="memitem">
4426<div class="memproto">
4427 <table class="memname">
4428 <tr>
4429 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a5c3a2aa3adc87d79164914b63f27dc25">RefDivisionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;std::divides&lt;float&gt;, <a class="el" href="structarmnn_1_1_division_queue_descriptor.xhtml">DivisionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a69485fd6282ca5ed7d50589f8f759645">StringMapping::RefDivisionWorkload_Execute</a>&gt;</td>
4430 </tr>
4431 </table>
4432</div><div class="memdoc">
4433
4434<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00056">56</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4435
4436</div>
4437</div>
4438<a id="a044df856403d0af13189f49bcfb209dd"></a>
4439<h2 class="memtitle"><span class="permalink"><a href="#a044df856403d0af13189f49bcfb209dd">&#9670;&nbsp;</a></span>RefMaximumWorkload</h2>
4440
4441<div class="memitem">
4442<div class="memproto">
4443 <table class="memname">
4444 <tr>
4445 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a044df856403d0af13189f49bcfb209dd">RefMaximumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1maximum.xhtml">armnn::maximum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_maximum_queue_descriptor.xhtml">MaximumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11aea93564675347f60a80cf699c177a80e">StringMapping::RefMaximumWorkload_Execute</a>&gt;</td>
4446 </tr>
4447 </table>
4448</div><div class="memdoc">
4449
4450<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00061">61</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4451
4452</div>
4453</div>
4454<a id="aa8c69a3741eafef59e51564511403fb8"></a>
4455<h2 class="memtitle"><span class="permalink"><a href="#aa8c69a3741eafef59e51564511403fb8">&#9670;&nbsp;</a></span>RefMinimumWorkload</h2>
4456
4457<div class="memitem">
4458<div class="memproto">
4459 <table class="memname">
4460 <tr>
4461 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aa8c69a3741eafef59e51564511403fb8">RefMinimumWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;<a class="el" href="structarmnn_1_1minimum.xhtml">armnn::minimum</a>&lt;float&gt;, <a class="el" href="structarmnn_1_1_minimum_queue_descriptor.xhtml">MinimumQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a9bddcf9777d5ca3ab5e40b3a93559625">StringMapping::RefMinimumWorkload_Execute</a>&gt;</td>
4462 </tr>
4463 </table>
4464</div><div class="memdoc">
4465
4466<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00066">66</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4467
4468</div>
4469</div>
4470<a id="aabff736a576814611f65ce1a14600a17"></a>
4471<h2 class="memtitle"><span class="permalink"><a href="#aabff736a576814611f65ce1a14600a17">&#9670;&nbsp;</a></span>RefMultiplicationWorkload</h2>
4472
4473<div class="memitem">
4474<div class="memproto">
4475 <table class="memname">
4476 <tr>
4477 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aabff736a576814611f65ce1a14600a17">RefMultiplicationWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;std::multiplies&lt;float&gt;, <a class="el" href="structarmnn_1_1_multiplication_queue_descriptor.xhtml">MultiplicationQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11ab3eb648f0f29bf56db68d80624b9bb6c">StringMapping::RefMultiplicationWorkload_Execute</a>&gt;</td>
4478 </tr>
4479 </table>
4480</div><div class="memdoc">
4481
4482<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00051">51</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4483
4484</div>
4485</div>
4486<a id="af0b5fb43c9e4ebee9928c3cc619a6c3f"></a>
4487<h2 class="memtitle"><span class="permalink"><a href="#af0b5fb43c9e4ebee9928c3cc619a6c3f">&#9670;&nbsp;</a></span>RefPadBFloat16Workload</h2>
4488
4489<div class="memitem">
4490<div class="memproto">
4491 <table class="memname">
4492 <tr>
4493 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#af0b5fb43c9e4ebee9928c3cc619a6c3f">RefPadBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>&gt;</td>
4494 </tr>
4495 </table>
4496</div><div class="memdoc">
4497
4498<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.xhtml">RefPadWorkload.hpp</a>.</p>
4499
4500</div>
4501</div>
4502<a id="a9e2582f828ee36a6bce3e1abdd660bc5"></a>
4503<h2 class="memtitle"><span class="permalink"><a href="#a9e2582f828ee36a6bce3e1abdd660bc5">&#9670;&nbsp;</a></span>RefPadFloat16Workload</h2>
4504
4505<div class="memitem">
4506<div class="memproto">
4507 <table class="memname">
4508 <tr>
4509 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9e2582f828ee36a6bce3e1abdd660bc5">RefPadFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4510 </tr>
4511 </table>
4512</div><div class="memdoc">
4513
4514<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00035">35</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.xhtml">RefPadWorkload.hpp</a>.</p>
4515
4516</div>
4517</div>
4518<a id="aef8145fff0dca42e42786745414fec96"></a>
4519<h2 class="memtitle"><span class="permalink"><a href="#aef8145fff0dca42e42786745414fec96">&#9670;&nbsp;</a></span>RefPadFloat32Workload</h2>
4520
4521<div class="memitem">
4522<div class="memproto">
4523 <table class="memname">
4524 <tr>
4525 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aef8145fff0dca42e42786745414fec96">RefPadFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4526 </tr>
4527 </table>
4528</div><div class="memdoc">
4529
4530<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.xhtml">RefPadWorkload.hpp</a>.</p>
4531
4532</div>
4533</div>
4534<a id="abc074517cf18f4e0827faca852df7bd9"></a>
4535<h2 class="memtitle"><span class="permalink"><a href="#abc074517cf18f4e0827faca852df7bd9">&#9670;&nbsp;</a></span>RefPadQAsymm8Workload</h2>
4536
4537<div class="memitem">
4538<div class="memproto">
4539 <table class="memname">
4540 <tr>
4541 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#abc074517cf18f4e0827faca852df7bd9">RefPadQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4542 </tr>
4543 </table>
4544</div><div class="memdoc">
4545
4546<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00036">36</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.xhtml">RefPadWorkload.hpp</a>.</p>
4547
4548</div>
4549</div>
4550<a id="acc8fc2b1c708fd1c7af0d04e004e8516"></a>
4551<h2 class="memtitle"><span class="permalink"><a href="#acc8fc2b1c708fd1c7af0d04e004e8516">&#9670;&nbsp;</a></span>RefPadQSymm16Workload</h2>
4552
4553<div class="memitem">
4554<div class="memproto">
4555 <table class="memname">
4556 <tr>
4557 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#acc8fc2b1c708fd1c7af0d04e004e8516">RefPadQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_pad_workload.xhtml">RefPadWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4558 </tr>
4559 </table>
4560</div><div class="memdoc">
4561
4562<p class="definition">Definition at line <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00037">37</a> of file <a class="el" href="_ref_pad_workload_8hpp_source.xhtml">RefPadWorkload.hpp</a>.</p>
4563
4564</div>
4565</div>
4566<a id="aed5e6ff8fdf785380ed4c8ca21702da3"></a>
4567<h2 class="memtitle"><span class="permalink"><a href="#aed5e6ff8fdf785380ed4c8ca21702da3">&#9670;&nbsp;</a></span>RefPermuteBFloat16Workload</h2>
4568
4569<div class="memitem">
4570<div class="memproto">
4571 <table class="memname">
4572 <tr>
4573 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aed5e6ff8fdf785380ed4c8ca21702da3">RefPermuteBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>&gt;</td>
4574 </tr>
4575 </table>
4576</div><div class="memdoc">
4577
4578<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00030">30</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.xhtml">RefPermuteWorkload.hpp</a>.</p>
4579
4580</div>
4581</div>
4582<a id="ad1c0fb6bfa580b04574ab56971b6cbc6"></a>
4583<h2 class="memtitle"><span class="permalink"><a href="#ad1c0fb6bfa580b04574ab56971b6cbc6">&#9670;&nbsp;</a></span>RefPermuteFloat16Workload</h2>
4584
4585<div class="memitem">
4586<div class="memproto">
4587 <table class="memname">
4588 <tr>
4589 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ad1c0fb6bfa580b04574ab56971b6cbc6">RefPermuteFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4590 </tr>
4591 </table>
4592</div><div class="memdoc">
4593
4594<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00031">31</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.xhtml">RefPermuteWorkload.hpp</a>.</p>
4595
4596</div>
4597</div>
4598<a id="a54c3f7c7b9909e828a084f68dc78a031"></a>
4599<h2 class="memtitle"><span class="permalink"><a href="#a54c3f7c7b9909e828a084f68dc78a031">&#9670;&nbsp;</a></span>RefPermuteFloat32Workload</h2>
4600
4601<div class="memitem">
4602<div class="memproto">
4603 <table class="memname">
4604 <tr>
4605 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a54c3f7c7b9909e828a084f68dc78a031">RefPermuteFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4606 </tr>
4607 </table>
4608</div><div class="memdoc">
4609
4610<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00032">32</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.xhtml">RefPermuteWorkload.hpp</a>.</p>
4611
4612</div>
4613</div>
4614<a id="a50ffe5068ecb2fbf7f73b30ef0d753f8"></a>
4615<h2 class="memtitle"><span class="permalink"><a href="#a50ffe5068ecb2fbf7f73b30ef0d753f8">&#9670;&nbsp;</a></span>RefPermuteQAsymm8Workload</h2>
4616
4617<div class="memitem">
4618<div class="memproto">
4619 <table class="memname">
4620 <tr>
4621 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a50ffe5068ecb2fbf7f73b30ef0d753f8">RefPermuteQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4622 </tr>
4623 </table>
4624</div><div class="memdoc">
4625
4626<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.xhtml">RefPermuteWorkload.hpp</a>.</p>
4627
4628</div>
4629</div>
4630<a id="a6ffed93fad525ce1d534cec2cdaee6bd"></a>
4631<h2 class="memtitle"><span class="permalink"><a href="#a6ffed93fad525ce1d534cec2cdaee6bd">&#9670;&nbsp;</a></span>RefPermuteQSymm16Workload</h2>
4632
4633<div class="memitem">
4634<div class="memproto">
4635 <table class="memname">
4636 <tr>
4637 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a6ffed93fad525ce1d534cec2cdaee6bd">RefPermuteQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_permute_workload.xhtml">RefPermuteWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4638 </tr>
4639 </table>
4640</div><div class="memdoc">
4641
4642<p class="definition">Definition at line <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_ref_permute_workload_8hpp_source.xhtml">RefPermuteWorkload.hpp</a>.</p>
4643
4644</div>
4645</div>
4646<a id="a01853f5d02495c04636016c1e3e7c144"></a>
4647<h2 class="memtitle"><span class="permalink"><a href="#a01853f5d02495c04636016c1e3e7c144">&#9670;&nbsp;</a></span>RefSubtractionWorkload</h2>
4648
4649<div class="memitem">
4650<div class="memproto">
4651 <table class="memname">
4652 <tr>
4653 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a01853f5d02495c04636016c1e3e7c144">RefSubtractionWorkload</a> = <a class="el" href="classarmnn_1_1_ref_elementwise_workload.xhtml">RefElementwiseWorkload</a>&lt;std::minus&lt;float&gt;, <a class="el" href="structarmnn_1_1_subtraction_queue_descriptor.xhtml">SubtractionQueueDescriptor</a>, <a class="el" href="structarmnn_1_1_string_mapping.xhtml#a4e7b349a05a558fa6792c71c11a6bf11a3694ad0341ebb1fe50b78efe13672519">StringMapping::RefSubtractionWorkload_Execute</a>&gt;</td>
4654 </tr>
4655 </table>
4656</div><div class="memdoc">
4657
4658<p class="definition">Definition at line <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml#l00046">46</a> of file <a class="el" href="_ref_elementwise_workload_8hpp_source.xhtml">RefElementwiseWorkload.hpp</a>.</p>
4659
4660</div>
4661</div>
4662<a id="a031a365fb37880a7f015dab159877a72"></a>
4663<h2 class="memtitle"><span class="permalink"><a href="#a031a365fb37880a7f015dab159877a72">&#9670;&nbsp;</a></span>RefTransposeBFloat16Workload</h2>
4664
4665<div class="memitem">
4666<div class="memproto">
4667 <table class="memname">
4668 <tr>
4669 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a031a365fb37880a7f015dab159877a72">RefTransposeBFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">DataType::BFloat16</a>&gt;</td>
4670 </tr>
4671 </table>
4672</div><div class="memdoc">
4673
4674<p class="definition">Definition at line <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00030">30</a> of file <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml">RefTransposeWorkload.hpp</a>.</p>
4675
4676</div>
4677</div>
4678<a id="aefcfe4efab61267262d1e02cb8af739d"></a>
4679<h2 class="memtitle"><span class="permalink"><a href="#aefcfe4efab61267262d1e02cb8af739d">&#9670;&nbsp;</a></span>RefTransposeFloat16Workload</h2>
4680
4681<div class="memitem">
4682<div class="memproto">
4683 <table class="memname">
4684 <tr>
4685 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#aefcfe4efab61267262d1e02cb8af739d">RefTransposeFloat16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">DataType::Float16</a>&gt;</td>
4686 </tr>
4687 </table>
4688</div><div class="memdoc">
4689
4690<p class="definition">Definition at line <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00031">31</a> of file <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml">RefTransposeWorkload.hpp</a>.</p>
4691
4692</div>
4693</div>
4694<a id="ad67165b4639bd5e50e5bc4538d226b35"></a>
4695<h2 class="memtitle"><span class="permalink"><a href="#ad67165b4639bd5e50e5bc4538d226b35">&#9670;&nbsp;</a></span>RefTransposeFloat32Workload</h2>
4696
4697<div class="memitem">
4698<div class="memproto">
4699 <table class="memname">
4700 <tr>
4701 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ad67165b4639bd5e50e5bc4538d226b35">RefTransposeFloat32Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">DataType::Float32</a>&gt;</td>
4702 </tr>
4703 </table>
4704</div><div class="memdoc">
4705
4706<p class="definition">Definition at line <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00032">32</a> of file <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml">RefTransposeWorkload.hpp</a>.</p>
4707
4708</div>
4709</div>
4710<a id="a1d13693cba12d3e406454b852527fb37"></a>
4711<h2 class="memtitle"><span class="permalink"><a href="#a1d13693cba12d3e406454b852527fb37">&#9670;&nbsp;</a></span>RefTransposeQAsymm8Workload</h2>
4712
4713<div class="memitem">
4714<div class="memproto">
4715 <table class="memname">
4716 <tr>
4717 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a1d13693cba12d3e406454b852527fb37">RefTransposeQAsymm8Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">DataType::QAsymmU8</a>&gt;</td>
4718 </tr>
4719 </table>
4720</div><div class="memdoc">
4721
4722<p class="definition">Definition at line <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml">RefTransposeWorkload.hpp</a>.</p>
4723
4724</div>
4725</div>
4726<a id="a4d9e736b0f2d5f6d66ea0a798366935c"></a>
4727<h2 class="memtitle"><span class="permalink"><a href="#a4d9e736b0f2d5f6d66ea0a798366935c">&#9670;&nbsp;</a></span>RefTransposeQSymm16Workload</h2>
4728
4729<div class="memitem">
4730<div class="memproto">
4731 <table class="memname">
4732 <tr>
4733 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a4d9e736b0f2d5f6d66ea0a798366935c">RefTransposeQSymm16Workload</a> = <a class="el" href="classarmnn_1_1_ref_transpose_workload.xhtml">RefTransposeWorkload</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a>&gt;</td>
4734 </tr>
4735 </table>
4736</div><div class="memdoc">
4737
4738<p class="definition">Definition at line <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml">RefTransposeWorkload.hpp</a>.</p>
4739
4740</div>
4741</div>
4742<a id="a0743ed5e860c316a20b68ca96301b411"></a>
4743<h2 class="memtitle"><span class="permalink"><a href="#a0743ed5e860c316a20b68ca96301b411">&#9670;&nbsp;</a></span>ResolveType</h2>
4744
4745<div class="memitem">
4746<div class="memproto">
4747 <table class="memname">
4748 <tr>
4749 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a0743ed5e860c316a20b68ca96301b411">ResolveType</a> = typename <a class="el" href="structarmnn_1_1_resolve_type_impl.xhtml">ResolveTypeImpl</a>&lt;DT&gt;::Type</td>
4750 </tr>
4751 </table>
4752</div><div class="memdoc">
4753
4754<p class="definition">Definition at line <a class="el" href="_resolve_type_8hpp_source.xhtml#l00073">73</a> of file <a class="el" href="_resolve_type_8hpp_source.xhtml">ResolveType.hpp</a>.</p>
4755
4756</div>
4757</div>
4758<a id="a60291543fe872b795e71e05bcd835fd1"></a>
4759<h2 class="memtitle"><span class="permalink"><a href="#a60291543fe872b795e71e05bcd835fd1">&#9670;&nbsp;</a></span>SplitterDescriptor</h2>
4760
4761<div class="memitem">
4762<div class="memproto">
4763 <table class="memname">
4764 <tr>
4765 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a> = <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a></td>
4766 </tr>
4767 </table>
4768</div><div class="memdoc">
4769
4770<p class="definition">Definition at line <a class="el" href="_descriptors_fwd_8hpp_source.xhtml#l00051">51</a> of file <a class="el" href="_descriptors_fwd_8hpp_source.xhtml">DescriptorsFwd.hpp</a>.</p>
4771
4772</div>
4773</div>
4774<a id="a02847c99a2acae3b267615479f93ab55"></a>
4775<h2 class="memtitle"><span class="permalink"><a href="#a02847c99a2acae3b267615479f93ab55">&#9670;&nbsp;</a></span>supported</h2>
4776
4777<div class="memitem">
4778<div class="memproto">
4779 <table class="memname">
4780 <tr>
4781 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a02847c99a2acae3b267615479f93ab55">supported</a> = <a class="el" href="classarmnn_1_1_i_subgraph_view_converter.xhtml">ISubgraphViewConverter</a></td>
4782 </tr>
4783 </table>
4784</div><div class="memdoc">
4785
4786<p class="definition">Definition at line <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml#l00031">31</a> of file <a class="el" href="_i_subgraph_view_converter_8hpp_source.xhtml">ISubgraphViewConverter.hpp</a>.</p>
4787
4788</div>
4789</div>
4790<a id="a9eb69ebdaf4ceb8014e7c8a540266100"></a>
4791<h2 class="memtitle"><span class="permalink"><a href="#a9eb69ebdaf4ceb8014e7c8a540266100">&#9670;&nbsp;</a></span>TContainer</h2>
4792
4793<div class="memitem">
4794<div class="memproto">
4795 <table class="memname">
4796 <tr>
4797 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a> = boost::variant&lt;std::vector&lt;float&gt;, std::vector&lt;int&gt;, std::vector&lt;unsigned char&gt; &gt;</td>
4798 </tr>
4799 </table>
4800</div><div class="memdoc">
4801
4802<p class="definition">Definition at line <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00033">33</a> of file <a class="el" href="_network_quantizer_8cpp_source.xhtml">NetworkQuantizer.cpp</a>.</p>
4803
4804</div>
4805</div>
4806<a id="a6d4fbf927a9d8e68cab1d7965c7dbc44"></a>
4807<h2 class="memtitle"><span class="permalink"><a href="#a6d4fbf927a9d8e68cab1d7965c7dbc44">&#9670;&nbsp;</a></span>Uint8ToFloat32Workload</h2>
4808
4809<div class="memitem">
4810<div class="memproto">
4811 <table class="memname">
4812 <tr>
4813 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a6d4fbf927a9d8e68cab1d7965c7dbc44">Uint8ToFloat32Workload</a> = <a class="el" href="classarmnn_1_1_multi_typed_workload.xhtml">MultiTypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>&gt;</td>
4814 </tr>
4815 </table>
4816</div><div class="memdoc">
4817
4818<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00192">192</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
4819
4820</div>
4821</div>
4822<a id="ad4d53881107428c301d43b5aad16bfe0"></a>
4823<h2 class="memtitle"><span class="permalink"><a href="#ad4d53881107428c301d43b5aad16bfe0">&#9670;&nbsp;</a></span>Uint8Workload</h2>
4824
4825<div class="memitem">
4826<div class="memproto">
4827 <table class="memname">
4828 <tr>
4829 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ad4d53881107428c301d43b5aad16bfe0">Uint8Workload</a> = <a class="el" href="classarmnn_1_1_typed_workload.xhtml">TypedWorkload</a>&lt;<a class="el" href="structarmnn_1_1_queue_descriptor.xhtml">QueueDescriptor</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>&gt;</td>
4830 </tr>
4831 </table>
4832</div><div class="memdoc">
4833
4834<p class="definition">Definition at line <a class="el" href="_workload_8hpp_source.xhtml#l00161">161</a> of file <a class="el" href="_workload_8hpp_source.xhtml">Workload.hpp</a>.</p>
4835
4836</div>
4837</div>
4838<a id="a15f53f26b8495b51d0bba3d1bc4efc80"></a>
4839<h2 class="memtitle"><span class="permalink"><a href="#a15f53f26b8495b51d0bba3d1bc4efc80">&#9670;&nbsp;</a></span>WorkloadQueue</h2>
4840
4841<div class="memitem">
4842<div class="memproto">
4843 <table class="memname">
4844 <tr>
4845 <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a15f53f26b8495b51d0bba3d1bc4efc80">WorkloadQueue</a> = std::vector&lt; std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_i_workload.xhtml">IWorkload</a>&gt; &gt;</td>
4846 </tr>
4847 </table>
4848</div><div class="memdoc">
4849
4850<p class="definition">Definition at line <a class="el" href="_execution_frame_8hpp_source.xhtml#l00013">13</a> of file <a class="el" href="_execution_frame_8hpp_source.xhtml">ExecutionFrame.hpp</a>.</p>
4851
4852</div>
4853</div>
4854<h2 class="groupheader">Enumeration Type Documentation</h2>
4855<a id="a56297e0f7b215eea46c818cb7528d9ea"></a>
4856<h2 class="memtitle"><span class="permalink"><a href="#a56297e0f7b215eea46c818cb7528d9ea">&#9670;&nbsp;</a></span>ActivationFunction</h2>
4857
4858<div class="memitem">
4859<div class="memproto">
4860<table class="mlabels">
4861 <tr>
4862 <td class="mlabels-left">
4863 <table class="memname">
4864 <tr>
4865 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a></td>
4866 </tr>
4867 </table>
4868 </td>
4869 <td class="mlabels-right">
4870<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4871 </tr>
4872</table>
4873</div><div class="memdoc">
4874<table class="fieldtable">
4875<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"></a>Sigmoid&#160;</td><td class="fielddoc"></td></tr>
4876<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"></a>TanH&#160;</td><td class="fielddoc"></td></tr>
4877<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"></a>Linear&#160;</td><td class="fielddoc"></td></tr>
4878<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"></a>ReLu&#160;</td><td class="fielddoc"></td></tr>
4879<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"></a>BoundedReLu&#160;</td><td class="fielddoc"><p>min(a, max(b, input)) ReLu1 &amp; ReLu6. </p>
4880</td></tr>
4881<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"></a>SoftReLu&#160;</td><td class="fielddoc"></td></tr>
4882<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"></a>LeakyReLu&#160;</td><td class="fielddoc"></td></tr>
4883<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
4884<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
4885<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"></a>Square&#160;</td><td class="fielddoc"></td></tr>
4886<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d"></a>Elu&#160;</td><td class="fielddoc"></td></tr>
4887<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186"></a>HardSwish&#160;</td><td class="fielddoc"></td></tr>
4888</table>
4889
4890<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00055">55</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
4891<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4, <span class="comment">///&lt; min(a, max(b, input)) ReLu1 &amp; ReLu6.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a> = 10,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a> = 11</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">armnn::ActivationFunction::ReLu</a></div></div>
4892<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
4893<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">armnn::ActivationFunction::LeakyReLu</a></div></div>
4894<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
4895<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">armnn::ActivationFunction::Sigmoid</a></div></div>
4896<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">armnn::ActivationFunction::SoftReLu</a></div></div>
4897<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">armnn::ActivationFunction::BoundedReLu</a></div><div class="ttdoc">min(a, max(b, input)) ReLu1 &amp; ReLu6. </div></div>
4898<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">armnn::ActivationFunction::Elu</a></div></div>
4899<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">armnn::ActivationFunction::Square</a></div></div>
4900<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">armnn::ActivationFunction::Linear</a></div></div>
4901<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">armnn::ActivationFunction::HardSwish</a></div></div>
4902<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">armnn::ActivationFunction::TanH</a></div></div>
4903</div><!-- fragment -->
4904</div>
4905</div>
4906<a id="ae7e8cbf71db6a490789ca6dcaa8deeae"></a>
4907<h2 class="memtitle"><span class="permalink"><a href="#ae7e8cbf71db6a490789ca6dcaa8deeae">&#9670;&nbsp;</a></span>ArgMinMaxFunction</h2>
4908
4909<div class="memitem">
4910<div class="memproto">
4911<table class="mlabels">
4912 <tr>
4913 <td class="mlabels-left">
4914 <table class="memname">
4915 <tr>
4916 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a></td>
4917 </tr>
4918 </table>
4919 </td>
4920 <td class="mlabels-right">
4921<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4922 </tr>
4923</table>
4924</div><div class="memdoc">
4925<table class="fieldtable">
4926<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"></a>Min&#160;</td><td class="fielddoc"></td></tr>
4927<tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
4928</table>
4929
4930<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00071">71</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
4931<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a> = 0,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
4932<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
4933</div><!-- fragment -->
4934</div>
4935</div>
4936<a id="a4dc0adc6737b5944e7671bee71788407"></a>
4937<h2 class="memtitle"><span class="permalink"><a href="#a4dc0adc6737b5944e7671bee71788407">&#9670;&nbsp;</a></span>BoostLogSeverityMapping</h2>
4938
4939<div class="memitem">
4940<div class="memproto">
4941<table class="mlabels">
4942 <tr>
4943 <td class="mlabels-left">
4944 <table class="memname">
4945 <tr>
4946 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a></td>
4947 </tr>
4948 </table>
4949 </td>
4950 <td class="mlabels-right">
4951<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4952 </tr>
4953</table>
4954</div><div class="memdoc">
4955<table class="fieldtable">
4956<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"></a>trace&#160;</td><td class="fielddoc"></td></tr>
4957<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"></a>debug&#160;</td><td class="fielddoc"></td></tr>
4958<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"></a>info&#160;</td><td class="fielddoc"></td></tr>
4959<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"></a>warning&#160;</td><td class="fielddoc"></td></tr>
4960<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"></a>error&#160;</td><td class="fielddoc"></td></tr>
4961<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"></a>fatal&#160;</td><td class="fielddoc"></td></tr>
4962</table>
4963
4964<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.xhtml#l00147">147</a> of file <a class="el" href="_logging_8hpp_source.xhtml">Logging.hpp</a>.</p>
4965<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">armnn::BoostLogSeverityMapping::debug</a></div></div>
4966<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">armnn::BoostLogSeverityMapping::trace</a></div></div>
4967<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">armnn::BoostLogSeverityMapping::error</a></div></div>
4968<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
4969<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">armnn::BoostLogSeverityMapping::fatal</a></div></div>
4970<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
4971</div><!-- fragment -->
4972</div>
4973</div>
4974<a id="a2d299363c9fc33334c571fa29ca4f58c"></a>
4975<h2 class="memtitle"><span class="permalink"><a href="#a2d299363c9fc33334c571fa29ca4f58c">&#9670;&nbsp;</a></span>ComparisonOperation</h2>
4976
4977<div class="memitem">
4978<div class="memproto">
4979<table class="mlabels">
4980 <tr>
4981 <td class="mlabels-left">
4982 <table class="memname">
4983 <tr>
4984 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a></td>
4985 </tr>
4986 </table>
4987 </td>
4988 <td class="mlabels-right">
4989<span class="mlabels"><span class="mlabel">strong</span></span> </td>
4990 </tr>
4991</table>
4992</div><div class="memdoc">
4993<table class="fieldtable">
4994<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"></a>Equal&#160;</td><td class="fielddoc"></td></tr>
4995<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"></a>Greater&#160;</td><td class="fielddoc"></td></tr>
4996<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"></a>GreaterOrEqual&#160;</td><td class="fielddoc"></td></tr>
4997<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"></a>Less&#160;</td><td class="fielddoc"></td></tr>
4998<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"></a>LessOrEqual&#160;</td><td class="fielddoc"></td></tr>
4999<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"></a>NotEqual&#160;</td><td class="fielddoc"></td></tr>
5000</table>
5001
5002<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00077">77</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5003<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">armnn::ComparisonOperation::Greater</a></div></div>
5004<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">armnn::ComparisonOperation::Equal</a></div></div>
5005<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">armnn::ComparisonOperation::Less</a></div></div>
5006<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">armnn::ComparisonOperation::NotEqual</a></div></div>
5007<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">armnn::ComparisonOperation::LessOrEqual</a></div></div>
5008<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">armnn::ComparisonOperation::GreaterOrEqual</a></div></div>
5009</div><!-- fragment -->
5010</div>
5011</div>
5012<a id="ae2f04a162585c0a5222a537efd5456ae"></a>
5013<h2 class="memtitle"><span class="permalink"><a href="#ae2f04a162585c0a5222a537efd5456ae">&#9670;&nbsp;</a></span>Compute</h2>
5014
5015<div class="memitem">
5016<div class="memproto">
5017<table class="mlabels">
5018 <tr>
5019 <td class="mlabels-left">
5020 <table class="memname">
5021 <tr>
5022 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a></td>
5023 </tr>
5024 </table>
5025 </td>
5026 <td class="mlabels-right">
5027<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5028 </tr>
5029</table>
5030</div><div class="memdoc">
5031
5032<p>The Compute enum is now deprecated and it is now being replaced by <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>. </p>
5033<table class="fieldtable">
5034<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
5035<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"></a>CpuRef&#160;</td><td class="fielddoc"><p>CPU Execution: Reference C++ kernels. </p>
5036</td></tr>
5037<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"></a>CpuAcc&#160;</td><td class="fielddoc"><p>CPU Execution: NEON: ArmCompute. </p>
5038</td></tr>
5039<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"></a>GpuAcc&#160;</td><td class="fielddoc"><p>GPU Execution: OpenCL: ArmCompute. </p>
5040</td></tr>
5041</table>
5042
5043<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
5044<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,<span class="comment"></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> /// CPU Execution: Reference C++ kernels</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,<span class="comment"></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> /// CPU Execution: NEON: ArmCompute</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> /// GPU Execution: OpenCL: ArmCompute</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
5045<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
5046<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
5047<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
5048</div><!-- fragment -->
5049</div>
5050</div>
5051<a id="ad1d5cce2d9e9a5d61c243e5c989112e0"></a>
5052<h2 class="memtitle"><span class="permalink"><a href="#ad1d5cce2d9e9a5d61c243e5c989112e0">&#9670;&nbsp;</a></span>DataLayout</h2>
5053
5054<div class="memitem">
5055<div class="memproto">
5056<table class="mlabels">
5057 <tr>
5058 <td class="mlabels-left">
5059 <table class="memname">
5060 <tr>
5061 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a></td>
5062 </tr>
5063 </table>
5064 </td>
5065 <td class="mlabels-right">
5066<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5067 </tr>
5068</table>
5069</div><div class="memdoc">
5070<table class="fieldtable">
5071<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"></a>NCHW&#160;</td><td class="fielddoc"></td></tr>
5072<tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"></a>NHWC&#160;</td><td class="fielddoc"></td></tr>
5073</table>
5074
5075<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00049">49</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5076<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a> = 1,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
5077<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
5078</div><!-- fragment -->
5079</div>
5080</div>
5081<a id="ad8ed01ff3ff33333d8e19db4d2818bb6"></a>
5082<h2 class="memtitle"><span class="permalink"><a href="#ad8ed01ff3ff33333d8e19db4d2818bb6">&#9670;&nbsp;</a></span>DataType</h2>
5083
5084<div class="memitem">
5085<div class="memproto">
5086<table class="mlabels">
5087 <tr>
5088 <td class="mlabels-left">
5089 <table class="memname">
5090 <tr>
5091 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a></td>
5092 </tr>
5093 </table>
5094 </td>
5095 <td class="mlabels-right">
5096<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5097 </tr>
5098</table>
5099</div><div class="memdoc">
5100<table class="fieldtable">
5101<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"></a>Float16&#160;</td><td class="fielddoc"></td></tr>
5102<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"></a>Float32&#160;</td><td class="fielddoc"></td></tr>
5103<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"></a>QAsymmU8&#160;</td><td class="fielddoc"></td></tr>
5104<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"></a>Signed32&#160;</td><td class="fielddoc"></td></tr>
5105<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"></a>Boolean&#160;</td><td class="fielddoc"></td></tr>
5106<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"></a>QSymmS16&#160;</td><td class="fielddoc"></td></tr>
5107<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"></a>QuantizedSymm8PerAxis&#160;</td><td class="fielddoc"></td></tr>
5108<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"></a>QSymmS8&#160;</td><td class="fielddoc"></td></tr>
5109<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"></a>QAsymmS8&#160;</td><td class="fielddoc"></td></tr>
5110<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"></a>BFloat16&#160;</td><td class="fielddoc"></td></tr>
5111<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"></a>QuantisedAsymm8&#160;</td><td class="fielddoc"></td></tr>
5112<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"></a>QuantisedSymm16&#160;</td><td class="fielddoc"></td></tr>
5113</table>
5114
5115<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00032">32</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5116<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> <a class="code" href="_deprecated_8hpp.xhtml#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Per Axis property inferred by number of scales in TensorInfo&quot;</span>) = 6,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a> = 9,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> <a class="code" href="_deprecated_8hpp.xhtml#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QAsymmU8 instead.&quot;</span>) = <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> <a class="code" href="_deprecated_8hpp.xhtml#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a>(<span class="stringliteral">&quot;Use DataType::QSymmS16 instead.&quot;</span>) = <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
5117<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
5118<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
5119<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
5120<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
5121<div class="ttc" id="_deprecated_8hpp_xhtml_a086b9723704bff3477c44f0141652c9c"><div class="ttname"><a href="_deprecated_8hpp.xhtml#a086b9723704bff3477c44f0141652c9c">ARMNN_DEPRECATED_ENUM_MSG</a></div><div class="ttdeci">#define ARMNN_DEPRECATED_ENUM_MSG(message)</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00050">Deprecated.hpp:50</a></div></div>
5122<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
5123<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
5124<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">armnn::DataType::QuantisedAsymm8</a></div></div>
5125<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
5126<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">armnn::DataType::QuantisedSymm16</a></div></div>
5127<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
5128<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
5129</div><!-- fragment -->
5130</div>
5131</div>
5132<a id="aff209afc1dc598da399e3e78617ce016"></a>
5133<h2 class="memtitle"><span class="permalink"><a href="#aff209afc1dc598da399e3e78617ce016">&#9670;&nbsp;</a></span>EdgeStrategy</h2>
5134
5135<div class="memitem">
5136<div class="memproto">
5137<table class="mlabels">
5138 <tr>
5139 <td class="mlabels-left">
5140 <table class="memname">
5141 <tr>
5142 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a></td>
5143 </tr>
5144 </table>
5145 </td>
5146 <td class="mlabels-right">
5147<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5148 </tr>
5149</table>
5150</div><div class="memdoc">
5151<table class="fieldtable">
5152<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
5153<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"></a>DirectCompatibility&#160;</td><td class="fielddoc"><p>No strategy has been defined. Used internally to verify integrity of optimizations. </p>
5154</td></tr>
5155<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"></a>ExportToTarget&#160;</td><td class="fielddoc"><p>Destination backend can work directly with tensors on source backend. </p>
5156</td></tr>
5157<tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"></a>CopyToTarget&#160;</td><td class="fielddoc"><p>Source backends tensor data can be exported to destination backend tensor without copy. </p>
5158<p>Copy contents from source backend tensor to destination backend tensor. </p>
5159</td></tr>
5160</table>
5161
5162<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00064">64</a> of file <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml">ITensorHandleFactory.hpp</a>.</p>
5163<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, <span class="comment">/// No strategy has been defined. Used internally to verify integrity of optimizations.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, <span class="comment">/// Destination backend can work directly with tensors on source backend.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, <span class="comment">/// Source backends tensor data can be exported to destination backend tensor without copy.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a> <span class="comment">/// Copy contents from source backend tensor to destination backend tensor.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span>};</div><div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">armnn::EdgeStrategy::DirectCompatibility</a></div><div class="ttdoc">No strategy has been defined. Used internally to verify integrity of optimizations. </div></div>
5164<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
5165<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">armnn::EdgeStrategy::ExportToTarget</a></div><div class="ttdoc">Destination backend can work directly with tensors on source backend. </div></div>
5166<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
5167</div><!-- fragment -->
5168</div>
5169</div>
5170<a id="a34eaed09302a4d7bfe930c13a7673e0b"></a>
5171<h2 class="memtitle"><span class="permalink"><a href="#a34eaed09302a4d7bfe930c13a7673e0b">&#9670;&nbsp;</a></span>GraphEvent</h2>
5172
5173<div class="memitem">
5174<div class="memproto">
5175<table class="mlabels">
5176 <tr>
5177 <td class="mlabels-left">
5178 <table class="memname">
5179 <tr>
5180 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a></td>
5181 </tr>
5182 </table>
5183 </td>
5184 <td class="mlabels-right">
5185<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5186 </tr>
5187</table>
5188</div><div class="memdoc">
5189<table class="fieldtable">
5190<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"></a>LayerAdded&#160;</td><td class="fielddoc"></td></tr>
5191<tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"></a>LayerErased&#160;</td><td class="fielddoc"></td></tr>
5192</table>
5193
5194<p class="definition">Definition at line <a class="el" href="_i_graph_observable_8hpp_source.xhtml#l00012">12</a> of file <a class="el" href="_i_graph_observable_8hpp_source.xhtml">IGraphObservable.hpp</a>.</p>
5195<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">LayerAdded</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"><div class="ttname"><a href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd">armnn::GraphEvent::LayerAdded</a></div></div>
5196<div class="ttc" id="namespacearmnn_xhtml_a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"><div class="ttname"><a href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">armnn::GraphEvent::LayerErased</a></div></div>
5197</div><!-- fragment -->
5198</div>
5199</div>
5200<a id="a4e2dd387ba6f0dc5164b4cdf8de3262a"></a>
5201<h2 class="memtitle"><span class="permalink"><a href="#a4e2dd387ba6f0dc5164b4cdf8de3262a">&#9670;&nbsp;</a></span>JsonObjectType</h2>
5202
5203<div class="memitem">
5204<div class="memproto">
5205<table class="mlabels">
5206 <tr>
5207 <td class="mlabels-left">
5208 <table class="memname">
5209 <tr>
5210 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a></td>
5211 </tr>
5212 </table>
5213 </td>
5214 <td class="mlabels-right">
5215<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5216 </tr>
5217</table>
5218</div><div class="memdoc">
5219<table class="fieldtable">
5220<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"></a>Measurement&#160;</td><td class="fielddoc"></td></tr>
5221<tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"></a>Event&#160;</td><td class="fielddoc"></td></tr>
5222</table>
5223
5224<p class="definition">Definition at line <a class="el" href="_json_printer_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_json_printer_8hpp_source.xhtml">JsonPrinter.hpp</a>.</p>
5225<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
5226<div class="ttc" id="namespacearmnn_xhtml_a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"><div class="ttname"><a href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">armnn::JsonObjectType::Event</a></div></div>
5227</div><!-- fragment -->
5228</div>
5229</div>
5230<a id="a56943a0946e5f15e5e58054b8e7a04a4"></a>
5231<h2 class="memtitle"><span class="permalink"><a href="#a56943a0946e5f15e5e58054b8e7a04a4">&#9670;&nbsp;</a></span>LayerType</h2>
5232
5233<div class="memitem">
5234<div class="memproto">
5235<table class="mlabels">
5236 <tr>
5237 <td class="mlabels-left">
5238 <table class="memname">
5239 <tr>
5240 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a></td>
5241 </tr>
5242 </table>
5243 </td>
5244 <td class="mlabels-right">
5245<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5246 </tr>
5247</table>
5248</div><div class="memdoc">
5249<table class="fieldtable">
5250<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"></a>FirstLayer&#160;</td><td class="fielddoc"></td></tr>
5251<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36"></a>Activation&#160;</td><td class="fielddoc"></td></tr>
5252<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"></a>Addition&#160;</td><td class="fielddoc"></td></tr>
5253<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c"></a>ArgMinMax&#160;</td><td class="fielddoc"></td></tr>
5254<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"></a>BatchNormalization&#160;</td><td class="fielddoc"></td></tr>
5255<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2"></a>BatchToSpaceNd&#160;</td><td class="fielddoc"></td></tr>
5256<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"></a>Comparison&#160;</td><td class="fielddoc"></td></tr>
5257<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"></a>Concat&#160;</td><td class="fielddoc"></td></tr>
5258<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"></a>Constant&#160;</td><td class="fielddoc"></td></tr>
5259<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"></a>ConvertFp16ToFp32&#160;</td><td class="fielddoc"></td></tr>
5260<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"></a>ConvertFp32ToFp16&#160;</td><td class="fielddoc"></td></tr>
5261<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"></a>Convolution2d&#160;</td><td class="fielddoc"></td></tr>
5262<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
5263<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d"></a>DepthToSpace&#160;</td><td class="fielddoc"></td></tr>
5264<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"></a>DepthwiseConvolution2d&#160;</td><td class="fielddoc"></td></tr>
5265<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d"></a>Dequantize&#160;</td><td class="fielddoc"></td></tr>
5266<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a"></a>DetectionPostProcess&#160;</td><td class="fielddoc"></td></tr>
5267<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"></a>Division&#160;</td><td class="fielddoc"></td></tr>
5268<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"></a>ElementwiseUnary&#160;</td><td class="fielddoc"></td></tr>
5269<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48"></a>FakeQuantization&#160;</td><td class="fielddoc"></td></tr>
5270<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
5271<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e"></a>FullyConnected&#160;</td><td class="fielddoc"></td></tr>
5272<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53"></a>Gather&#160;</td><td class="fielddoc"></td></tr>
5273<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"></a>Input&#160;</td><td class="fielddoc"></td></tr>
5274<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"></a>InstanceNormalization&#160;</td><td class="fielddoc"></td></tr>
5275<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"></a>L2Normalization&#160;</td><td class="fielddoc"></td></tr>
5276<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488"></a>LogSoftmax&#160;</td><td class="fielddoc"></td></tr>
5277<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"></a>Lstm&#160;</td><td class="fielddoc"></td></tr>
5278<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"></a>Maximum&#160;</td><td class="fielddoc"></td></tr>
5279<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d"></a>Mean&#160;</td><td class="fielddoc"></td></tr>
5280<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"></a>MemCopy&#160;</td><td class="fielddoc"></td></tr>
5281<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"></a>MemImport&#160;</td><td class="fielddoc"></td></tr>
5282<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"></a>Merge&#160;</td><td class="fielddoc"></td></tr>
5283<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"></a>Minimum&#160;</td><td class="fielddoc"></td></tr>
5284<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"></a>Multiplication&#160;</td><td class="fielddoc"></td></tr>
5285<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"></a>Normalization&#160;</td><td class="fielddoc"></td></tr>
5286<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"></a>Output&#160;</td><td class="fielddoc"></td></tr>
5287<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f"></a>Pad&#160;</td><td class="fielddoc"></td></tr>
5288<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"></a>Permute&#160;</td><td class="fielddoc"></td></tr>
5289<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001"></a>Pooling2d&#160;</td><td class="fielddoc"></td></tr>
5290<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"></a>PreCompiled&#160;</td><td class="fielddoc"></td></tr>
5291<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"></a>Prelu&#160;</td><td class="fielddoc"></td></tr>
5292<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb"></a>Quantize&#160;</td><td class="fielddoc"></td></tr>
5293<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"></a>QuantizedLstm&#160;</td><td class="fielddoc"></td></tr>
5294<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"></a>Reshape&#160;</td><td class="fielddoc"></td></tr>
5295<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63"></a>Resize&#160;</td><td class="fielddoc"></td></tr>
5296<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb"></a>Slice&#160;</td><td class="fielddoc"></td></tr>
5297<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"></a>Softmax&#160;</td><td class="fielddoc"></td></tr>
5298<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279"></a>SpaceToBatchNd&#160;</td><td class="fielddoc"></td></tr>
5299<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a"></a>SpaceToDepth&#160;</td><td class="fielddoc"></td></tr>
5300<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf"></a>Splitter&#160;</td><td class="fielddoc"></td></tr>
5301<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca"></a>Stack&#160;</td><td class="fielddoc"></td></tr>
5302<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"></a>StandIn&#160;</td><td class="fielddoc"></td></tr>
5303<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d"></a>StridedSlice&#160;</td><td class="fielddoc"></td></tr>
5304<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"></a>Subtraction&#160;</td><td class="fielddoc"></td></tr>
5305<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"></a>Switch&#160;</td><td class="fielddoc"></td></tr>
5306<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"></a>TransposeConvolution2d&#160;</td><td class="fielddoc"></td></tr>
5307<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"></a>LastLayer&#160;</td><td class="fielddoc"></td></tr>
5308<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aaf70b1ac863830a4e1ce6268c8399f54"></a>Transpose&#160;</td><td class="fielddoc"></td></tr>
5309</table>
5310
5311<p class="definition">Definition at line <a class="el" href="_internal_types_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_internal_types_8hpp_source.xhtml">InternalTypes.hpp</a>.</p>
5312<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">Activation</a> = <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.xhtml#a374120de442fe42c26536bb4f1e2a5a1">ArgMinMax</a>,</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <a class="code" href="namespacearmnn.xhtml#a8746512fab5ec10c2c57800c66311ba7">BatchToSpaceNd</a>,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">DepthToSpace</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">Dequantize</a>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">DetectionPostProcess</a>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab3c0b7e1a78b1b98c24934221f36a7c3">FakeQuantization</a>,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad34d1d5b1ca8f52dc296ecf52ba20c8a">FullyConnected</a>,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.xhtml#a66004b2326f8ccb1faa71d5efa186633">Gather</a>,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac52e04c0e349e25bcdaa72c27395ef8f">LogSoftmax</a>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="namespacearmnn.xhtml#a165ae372a7f67cad64ef3395d30122ce">Mean</a>,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">Pad</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">Permute</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae2e93e304cf516841c521e3eaee025cd">Pooling2d</a>,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad773a034fb9983e15f3094b4c5c7c30c">Quantize</a>,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespacearmnn.xhtml#a25dc224be48103343302b5a6fd588fe7">Resize</a>,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.xhtml#a044ea0cc993d4d1fbe4ec877b17b8d39">Slice</a>,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.xhtml#aa999ff2585ad75b95954a9323f63c32b">Softmax</a>,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4a180e425d4c19b2cdea4ce5760180e1">SpaceToBatchNd</a>,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.xhtml#a5e1dc69443b64ad16b669388a6023f7a">SpaceToDepth</a>,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="namespacearmnn.xhtml#a427c3d26d05b518b1ace407035f5920e">Splitter</a>,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6ef2dcac2ec0683d52df1b051404e7d6">Stack</a>,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.xhtml#a86d7a7168ac00b75b4971f9aad623698">StridedSlice</a>,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Last layer goes here.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespacearmnn_utils.xhtml#a405d5f966ec992d1717711e5a2d7909d">Transpose</a> = LastLayer</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">armnn::LayerType::TransposeConvolution2d</a></div></div>
5313<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">armnn::LayerType::ElementwiseUnary</a></div></div>
5314<div class="ttc" id="namespacearmnn_xhtml_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdoc">Dequantize an 8-bit data type into a floating point data type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.xhtml#l00047">TypesUtils.cpp:47</a></div></div>
5315<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">armnn::LayerType::Concat</a></div></div>
5316<div class="ttc" id="namespacearmnn_xhtml_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.xhtml#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.xhtml#l00016">Slice.cpp:16</a></div></div>
5317<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">armnn::LayerType::Comparison</a></div></div>
5318<div class="ttc" id="namespacearmnn_xhtml_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
5319<div class="ttc" id="namespacearmnn_xhtml_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.xhtml#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.xhtml#l00015">ArgMinMax.cpp:15</a></div></div>
5320<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
5321<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">armnn::LayerType::ConvertFp32ToFp16</a></div></div>
5322<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">armnn::LayerType::Normalization</a></div></div>
5323<div class="ttc" id="namespacearmnn_utils_xhtml_a405d5f966ec992d1717711e5a2d7909d"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a405d5f966ec992d1717711e5a2d7909d">armnnUtils::Transpose</a></div><div class="ttdeci">void Transpose(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="armnn_utils_2_transpose_8cpp_source.xhtml#l00120">Transpose.cpp:120</a></div></div>
5324<div class="ttc" id="namespacearmnn_xhtml_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.xhtml#l00018">DepthToSpace.cpp:18</a></div></div>
5325<div class="ttc" id="namespacearmnn_xhtml_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.xhtml#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.xhtml#l00015">FullyConnected.cpp:15</a></div></div>
5326<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">armnn::LayerType::Multiplication</a></div></div>
5327<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">armnn::LayerType::InstanceNormalization</a></div></div>
5328<div class="ttc" id="namespacearmnn_xhtml_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.xhtml#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
5329<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">armnn::LayerType::Merge</a></div></div>
5330<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">armnn::LayerType::L2Normalization</a></div></div>
5331<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">armnn::LayerType::Prelu</a></div></div>
5332<div class="ttc" id="namespacearmnn_xhtml_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.xhtml#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.xhtml#l00012">Stack.cpp:12</a></div></div>
5333<div class="ttc" id="namespacearmnn_xhtml_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad.cpp:22</a></div></div>
5334<div class="ttc" id="namespacearmnn_utils_xhtml_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00121">Permute.cpp:121</a></div></div>
5335<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">armnn::LayerType::ConvertFp16ToFp32</a></div></div>
5336<div class="ttc" id="namespacearmnn_xhtml_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess.cpp:141</a></div></div>
5337<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">armnn::LayerType::Subtraction</a></div></div>
5338<div class="ttc" id="namespacearmnn_xhtml_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.xhtml#l00020">Debug.cpp:20</a></div></div>
5339<div class="ttc" id="namespacearmnn_xhtml_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.xhtml#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.xhtml#l00013">Activation.cpp:13</a></div></div>
5340<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
5341<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
5342<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">armnn::LayerType::Maximum</a></div></div>
5343<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">armnn::LayerType::PreCompiled</a></div></div>
5344<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::LayerType::Reshape</a></div></div>
5345<div class="ttc" id="namespacearmnn_xhtml_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.xhtml#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Quantize a floating point data type into an 8-bit data type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.xhtml#l00031">TypesUtils.cpp:31</a></div></div>
5346<div class="ttc" id="namespacearmnn_xhtml_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.xhtml#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.xhtml#l00035">Resize.cpp:35</a></div></div>
5347<div class="ttc" id="namespacearmnn_xhtml_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.xhtml#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.xhtml#l00030">LogSoftmax.cpp:30</a></div></div>
5348<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a></div></div>
5349<div class="ttc" id="namespacearmnn_xhtml_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.xhtml#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">SpaceToBatchNd.cpp:34</a></div></div>
5350<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">armnn::LayerType::DepthwiseConvolution2d</a></div></div>
5351<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">armnn::LayerType::FirstLayer</a></div></div>
5352<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
5353<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">armnn::LayerType::StandIn</a></div></div>
5354<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">armnn::LayerType::MemImport</a></div></div>
5355<div class="ttc" id="namespacearmnn_xhtml_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.xhtml#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.xhtml#l00090">StridedSlice.cpp:90</a></div></div>
5356<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">armnn::LayerType::Switch</a></div></div>
5357<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">armnn::LayerType::QuantizedLstm</a></div></div>
5358<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">armnn::LayerType::LastLayer</a></div></div>
5359<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
5360<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">armnn::LayerType::Lstm</a></div></div>
5361<div class="ttc" id="namespacearmnn_xhtml_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.xhtml#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean.cpp:71</a></div></div>
5362<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">armnn::LayerType::BatchNormalization</a></div></div>
5363<div class="ttc" id="namespacearmnn_xhtml_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.xhtml#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml#l00018">Gather.cpp:18</a></div></div>
5364<div class="ttc" id="namespacearmnn_xhtml_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.xhtml#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.xhtml#l00036">SpaceToDepth.cpp:36</a></div></div>
5365<div class="ttc" id="namespacearmnn_xhtml_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.xhtml#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">BatchToSpaceNd.cpp:35</a></div></div>
5366<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">armnn::LayerType::Minimum</a></div></div>
5367<div class="ttc" id="namespacearmnn_xhtml_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.xhtml#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.xhtml#l00143">Pooling2d.cpp:143</a></div></div>
5368<div class="ttc" id="namespacearmnn_xhtml_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.xhtml#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.xhtml#l00017">Splitter.hpp:17</a></div></div>
5369<div class="ttc" id="namespacearmnn_xhtml_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.xhtml#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.xhtml#l00017">Softmax.cpp:17</a></div></div>
5370<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">armnn::LayerType::Division</a></div></div>
5371</div><!-- fragment -->
5372</div>
5373</div>
5374<a id="a93a3ba385cad27c4774e5fe64c025d3d"></a>
5375<h2 class="memtitle"><span class="permalink"><a href="#a93a3ba385cad27c4774e5fe64c025d3d">&#9670;&nbsp;</a></span>LogSeverity</h2>
5376
5377<div class="memitem">
5378<div class="memproto">
5379<table class="mlabels">
5380 <tr>
5381 <td class="mlabels-left">
5382 <table class="memname">
5383 <tr>
5384 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a></td>
5385 </tr>
5386 </table>
5387 </td>
5388 <td class="mlabels-right">
5389<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5390 </tr>
5391</table>
5392</div><div class="memdoc">
5393<table class="fieldtable">
5394<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"></a>Trace&#160;</td><td class="fielddoc"></td></tr>
5395<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
5396<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"></a>Info&#160;</td><td class="fielddoc"></td></tr>
5397<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"></a>Warning&#160;</td><td class="fielddoc"></td></tr>
5398<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"></a>Error&#160;</td><td class="fielddoc"></td></tr>
5399<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"></a>Fatal&#160;</td><td class="fielddoc"></td></tr>
5400</table>
5401
5402<p class="definition">Definition at line <a class="el" href="_utils_8hpp_source.xhtml#l00012">12</a> of file <a class="el" href="_utils_8hpp_source.xhtml">Utils.hpp</a>.</p>
5403<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">Debug</a>,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">armnn::LogSeverity::Warning</a></div></div>
5404<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">armnn::LogSeverity::Fatal</a></div></div>
5405<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">armnn::LogSeverity::Info</a></div></div>
5406<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">armnn::LogSeverity::Error</a></div></div>
5407<div class="ttc" id="namespacearmnn_xhtml_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.xhtml#l00020">Debug.cpp:20</a></div></div>
5408<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">armnn::LogSeverity::Trace</a></div></div>
5409</div><!-- fragment -->
5410</div>
5411</div>
5412<a id="a0fc99721e27eb20ecd0ea85a3cc8b488"></a>
5413<h2 class="memtitle"><span class="permalink"><a href="#a0fc99721e27eb20ecd0ea85a3cc8b488">&#9670;&nbsp;</a></span>MemorySource</h2>
5414
5415<div class="memitem">
5416<div class="memproto">
5417<table class="mlabels">
5418 <tr>
5419 <td class="mlabels-left">
5420 <table class="memname">
5421 <tr>
5422 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a></td>
5423 </tr>
5424 </table>
5425 </td>
5426 <td class="mlabels-right">
5427<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5428 </tr>
5429</table>
5430</div><div class="memdoc">
5431<table class="fieldtable">
5432<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
5433<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"></a>Malloc&#160;</td><td class="fielddoc"></td></tr>
5434<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"></a>DmaBuf&#160;</td><td class="fielddoc"></td></tr>
5435<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"></a>DmaBufProtected&#160;</td><td class="fielddoc"></td></tr>
5436</table>
5437
5438<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.xhtml#l00013">13</a> of file <a class="el" href="_memory_sources_8hpp_source.xhtml">MemorySources.hpp</a>.</p>
5439<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a> = 0,</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">armnn::MemorySource::Malloc</a></div></div>
5440<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
5441<div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">armnn::MemorySource::DmaBuf</a></div></div>
5442<div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a></div></div>
5443</div><!-- fragment -->
5444</div>
5445</div>
5446<a id="abe18a5033f2ab9c0de82c676b48f5437"></a>
5447<h2 class="memtitle"><span class="permalink"><a href="#abe18a5033f2ab9c0de82c676b48f5437">&#9670;&nbsp;</a></span>NormalizationAlgorithmChannel</h2>
5448
5449<div class="memitem">
5450<div class="memproto">
5451<table class="mlabels">
5452 <tr>
5453 <td class="mlabels-left">
5454 <table class="memname">
5455 <tr>
5456 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a></td>
5457 </tr>
5458 </table>
5459 </td>
5460 <td class="mlabels-right">
5461<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5462 </tr>
5463</table>
5464</div><div class="memdoc">
5465<table class="fieldtable">
5466<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"></a>Across&#160;</td><td class="fielddoc"></td></tr>
5467<tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"></a>Within&#160;</td><td class="fielddoc"></td></tr>
5468</table>
5469
5470<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00126">126</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5471<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a> = 0,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"><div class="ttname"><a href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">armnn::NormalizationAlgorithmChannel::Within</a></div></div>
5472<div class="ttc" id="namespacearmnn_xhtml_abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"><div class="ttname"><a href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">armnn::NormalizationAlgorithmChannel::Across</a></div></div>
5473</div><!-- fragment -->
5474</div>
5475</div>
5476<a id="ad605d1661fa0d8c7fea651d82fbe11c9"></a>
5477<h2 class="memtitle"><span class="permalink"><a href="#ad605d1661fa0d8c7fea651d82fbe11c9">&#9670;&nbsp;</a></span>NormalizationAlgorithmMethod</h2>
5478
5479<div class="memitem">
5480<div class="memproto">
5481<table class="mlabels">
5482 <tr>
5483 <td class="mlabels-left">
5484 <table class="memname">
5485 <tr>
5486 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a></td>
5487 </tr>
5488 </table>
5489 </td>
5490 <td class="mlabels-right">
5491<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5492 </tr>
5493</table>
5494</div><div class="memdoc">
5495<table class="fieldtable">
5496<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"></a>LocalBrightness&#160;</td><td class="fielddoc"><p>Krichevsky 2012: Local Brightness Normalization. </p>
5497</td></tr>
5498<tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"></a>LocalContrast&#160;</td><td class="fielddoc"><p>Jarret 2009: Local Contrast Normalization. </p>
5499</td></tr>
5500</table>
5501
5502<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00132">132</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5503<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;{<span class="comment"></span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> /// Krichevsky 2012: Local Brightness Normalization</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a> = 0,<span class="comment"></span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> /// Jarret 2009: Local Contrast Normalization</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"><div class="ttname"><a href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">armnn::NormalizationAlgorithmMethod::LocalContrast</a></div><div class="ttdoc">Jarret 2009: Local Contrast Normalization. </div></div>
5504<div class="ttc" id="namespacearmnn_xhtml_ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d"><div class="ttname"><a href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">armnn::NormalizationAlgorithmMethod::LocalBrightness</a></div><div class="ttdoc">Krichevsky 2012: Local Brightness Normalization. </div></div>
5505</div><!-- fragment -->
5506</div>
5507</div>
5508<a id="adf2e5515c4c36a3e7e46bb8b83c6754e"></a>
5509<h2 class="memtitle"><span class="permalink"><a href="#adf2e5515c4c36a3e7e46bb8b83c6754e">&#9670;&nbsp;</a></span>OutputShapeRounding</h2>
5510
5511<div class="memitem">
5512<div class="memproto">
5513<table class="mlabels">
5514 <tr>
5515 <td class="mlabels-left">
5516 <table class="memname">
5517 <tr>
5518 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a></td>
5519 </tr>
5520 </table>
5521 </td>
5522 <td class="mlabels-right">
5523<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5524 </tr>
5525</table>
5526</div><div class="memdoc">
5527<table class="fieldtable">
5528<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
5529<tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"></a>Ceiling&#160;</td><td class="fielddoc"></td></tr>
5530</table>
5531
5532<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00140">140</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5533<div class="fragment"><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a> = 0,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"><div class="ttname"><a href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">armnn::OutputShapeRounding::Ceiling</a></div></div>
5534<div class="ttc" id="namespacearmnn_xhtml_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
5535</div><!-- fragment -->
5536</div>
5537</div>
5538<a id="a3888429b6ebc79f9a7df549e5e4d9a2f"></a>
5539<h2 class="memtitle"><span class="permalink"><a href="#a3888429b6ebc79f9a7df549e5e4d9a2f">&#9670;&nbsp;</a></span>PaddingMethod</h2>
5540
5541<div class="memitem">
5542<div class="memproto">
5543<table class="mlabels">
5544 <tr>
5545 <td class="mlabels-left">
5546 <table class="memname">
5547 <tr>
5548 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a></td>
5549 </tr>
5550 </table>
5551 </td>
5552 <td class="mlabels-right">
5553<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5554 </tr>
5555</table>
5556</div><div class="memdoc">
5557
5558<p>The padding method modifies the output of pooling layers. </p>
5559<p>In both supported methods, the values are ignored (they are not even zeroes, which would make a difference for max pooling a tensor with negative values). The difference between IgnoreValue and Exclude is that the former counts the padding fields in the divisor of Average and L2 pooling, while Exclude does not. </p>
5560<table class="fieldtable">
5561<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"></a>IgnoreValue&#160;</td><td class="fielddoc"><p>The padding fields count, but are ignored. </p>
5562</td></tr>
5563<tr><td class="fieldname"><a id="a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"></a>Exclude&#160;</td><td class="fielddoc"><p>The padding fields don't count and are ignored. </p>
5564</td></tr>
5565</table>
5566
5567<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00118">118</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5568<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;{<span class="comment"></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> /// The padding fields count, but are ignored</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a> = 0,<span class="comment"></span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> /// The padding fields don&#39;t count and are ignored</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"></span> <a class="code" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6"><div class="ttname"><a href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">armnn::PaddingMethod::Exclude</a></div><div class="ttdoc">The padding fields don&amp;#39;t count and are ignored. </div></div>
5569<div class="ttc" id="namespacearmnn_xhtml_a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a"><div class="ttname"><a href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">armnn::PaddingMethod::IgnoreValue</a></div><div class="ttdoc">The padding fields count, but are ignored. </div></div>
5570</div><!-- fragment -->
5571</div>
5572</div>
5573<a id="a961bbfe1db71a848eff5a1f0ab775718"></a>
5574<h2 class="memtitle"><span class="permalink"><a href="#a961bbfe1db71a848eff5a1f0ab775718">&#9670;&nbsp;</a></span>PoolingAlgorithm</h2>
5575
5576<div class="memitem">
5577<div class="memproto">
5578<table class="mlabels">
5579 <tr>
5580 <td class="mlabels-left">
5581 <table class="memname">
5582 <tr>
5583 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a></td>
5584 </tr>
5585 </table>
5586 </td>
5587 <td class="mlabels-right">
5588<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5589 </tr>
5590</table>
5591</div><div class="memdoc">
5592<table class="fieldtable">
5593<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
5594<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"></a>Average&#160;</td><td class="fielddoc"></td></tr>
5595<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"></a>L2&#160;</td><td class="fielddoc"></td></tr>
5596</table>
5597
5598<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00096">96</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5599<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 0,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
5600<div class="ttc" id="namespacearmnn_xhtml_a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"><div class="ttname"><a href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">armnn::PoolingAlgorithm::Average</a></div></div>
5601<div class="ttc" id="namespacearmnn_xhtml_a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"><div class="ttname"><a href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">armnn::PoolingAlgorithm::L2</a></div></div>
5602</div><!-- fragment -->
5603</div>
5604</div>
5605<a id="a9a2af2f8c4af4f9efa8e79417d505ac4"></a>
5606<h2 class="memtitle"><span class="permalink"><a href="#a9a2af2f8c4af4f9efa8e79417d505ac4">&#9670;&nbsp;</a></span>ResizeMethod</h2>
5607
5608<div class="memitem">
5609<div class="memproto">
5610<table class="mlabels">
5611 <tr>
5612 <td class="mlabels-left">
5613 <table class="memname">
5614 <tr>
5615 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a></td>
5616 </tr>
5617 </table>
5618 </td>
5619 <td class="mlabels-right">
5620<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5621 </tr>
5622</table>
5623</div><div class="memdoc">
5624<table class="fieldtable">
5625<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"></a>Bilinear&#160;</td><td class="fielddoc"></td></tr>
5626<tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"></a>NearestNeighbor&#160;</td><td class="fielddoc"></td></tr>
5627</table>
5628
5629<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00103">103</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5630<div class="fragment"><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a> = 0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
5631<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
5632</div><!-- fragment -->
5633</div>
5634</div>
5635<a id="a67a0db04d321a74b7e7fcfd3f1a3f70b"></a>
5636<h2 class="memtitle"><span class="permalink"><a href="#a67a0db04d321a74b7e7fcfd3f1a3f70b">&#9670;&nbsp;</a></span>Status</h2>
5637
5638<div class="memitem">
5639<div class="memproto">
5640<table class="mlabels">
5641 <tr>
5642 <td class="mlabels-left">
5643 <table class="memname">
5644 <tr>
5645 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a></td>
5646 </tr>
5647 </table>
5648 </td>
5649 <td class="mlabels-right">
5650<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5651 </tr>
5652</table>
5653</div><div class="memdoc">
5654
5655<p>enumeration </p>
5656<table class="fieldtable">
5657<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"></a>Success&#160;</td><td class="fielddoc"></td></tr>
5658<tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"></a>Failure&#160;</td><td class="fielddoc"></td></tr>
5659</table>
5660
5661<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00026">26</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5662<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a> = 0,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
5663<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
5664</div><!-- fragment -->
5665</div>
5666</div>
5667<a id="a707090747256af276c389e0cf1cb0a9a"></a>
5668<h2 class="memtitle"><span class="permalink"><a href="#a707090747256af276c389e0cf1cb0a9a">&#9670;&nbsp;</a></span>TuningLevel</h2>
5669
5670<div class="memitem">
5671<div class="memproto">
5672<table class="mlabels">
5673 <tr>
5674 <td class="mlabels-left">
5675 <table class="memname">
5676 <tr>
5677 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a></td>
5678 </tr>
5679 </table>
5680 </td>
5681 <td class="mlabels-right">
5682<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5683 </tr>
5684</table>
5685</div><div class="memdoc">
5686<table class="fieldtable">
5687<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"></a>None&#160;</td><td class="fielddoc"></td></tr>
5688<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"></a>Rapid&#160;</td><td class="fielddoc"></td></tr>
5689<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"></a>Normal&#160;</td><td class="fielddoc"></td></tr>
5690<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"></a>Exhaustive&#160;</td><td class="fielddoc"></td></tr>
5691</table>
5692
5693<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00069">69</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
5694<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">armnn::TuningLevel::Rapid</a></div></div>
5695<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">armnn::TuningLevel::Exhaustive</a></div></div>
5696<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">armnn::TuningLevel::Normal</a></div></div>
5697<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">armnn::TuningLevel::None</a></div></div>
5698</div><!-- fragment -->
5699</div>
5700</div>
5701<a id="a1cfaa710db2a54673b21d2ea2da757c8"></a>
5702<h2 class="memtitle"><span class="permalink"><a href="#a1cfaa710db2a54673b21d2ea2da757c8">&#9670;&nbsp;</a></span>UnaryOperation</h2>
5703
5704<div class="memitem">
5705<div class="memproto">
5706<table class="mlabels">
5707 <tr>
5708 <td class="mlabels-left">
5709 <table class="memname">
5710 <tr>
5711 <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a></td>
5712 </tr>
5713 </table>
5714 </td>
5715 <td class="mlabels-right">
5716<span class="mlabels"><span class="mlabel">strong</span></span> </td>
5717 </tr>
5718</table>
5719</div><div class="memdoc">
5720<table class="fieldtable">
5721<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
5722<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"></a>Exp&#160;</td><td class="fielddoc"></td></tr>
5723<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
5724<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"></a>Rsqrt&#160;</td><td class="fielddoc"></td></tr>
5725<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"></a>Neg&#160;</td><td class="fielddoc"></td></tr>
5726</table>
5727
5728<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00087">87</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
5729<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
5730<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
5731<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">armnn::UnaryOperation::Neg</a></div></div>
5732<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">armnn::UnaryOperation::Exp</a></div></div>
5733<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">armnn::UnaryOperation::Rsqrt</a></div></div>
5734</div><!-- fragment -->
5735</div>
5736</div>
5737<h2 class="groupheader">Function Documentation</h2>
5738<a id="a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"></a>
5739<h2 class="memtitle"><span class="permalink"><a href="#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">&#9670;&nbsp;</a></span>Activation() <span class="overload">[1/2]</span></h2>
5740
5741<div class="memitem">
5742<div class="memproto">
5743 <table class="memname">
5744 <tr>
5745 <td class="memname">float Activation </td>
5746 <td>(</td>
5747 <td class="paramtype">float&#160;</td>
5748 <td class="paramname"><em>in</em>, </td>
5749 </tr>
5750 <tr>
5751 <td class="paramkey"></td>
5752 <td></td>
5753 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
5754 <td class="paramname"><em>function</em>, </td>
5755 </tr>
5756 <tr>
5757 <td class="paramkey"></td>
5758 <td></td>
5759 <td class="paramtype">float&#160;</td>
5760 <td class="paramname"><em>a</em>, </td>
5761 </tr>
5762 <tr>
5763 <td class="paramkey"></td>
5764 <td></td>
5765 <td class="paramtype">float&#160;</td>
5766 <td class="paramname"><em>b</em>&#160;</td>
5767 </tr>
5768 <tr>
5769 <td></td>
5770 <td>)</td>
5771 <td></td><td></td>
5772 </tr>
5773 </table>
5774</div><div class="memdoc">
5775
5776<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_activation_8cpp_source.xhtml">Activation.cpp</a>.</p>
5777
5778<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
5779
5780<p class="reference">Referenced by <a class="el" href="_activation_8cpp_source.xhtml#l00095">Activation()</a>.</p>
5781<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">float</span> output;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="comment">// Compute the result of the activation function.</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">function</span>)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; output = a * in + b;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid:</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; output = 1.f / (1.f + expf(-in));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; output = std::max(0.f, in);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu:</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; output = std::min(a, std::max(b, in));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; output = logf(1.0f + expf(in));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu:</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; output = in &gt; 0.0f ? in : (in * a);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; output = in &lt; 0 ? -in : in;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</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">case</span> ActivationFunction::Sqrt:</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; output = sqrtf(in);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; output = in * in;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">case</span> ActivationFunction::TanH:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; output = a * tanhf(b * in);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Elu:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; output = (in &gt;= 0) ? in : a * (expf(in) - 1);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> ActivationFunction::HardSwish:</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; <span class="comment">// hard_swish(x) = x * relu6(x+3) / 6</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// relu6(x) = min(max(x,0),6)</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; output = in * (std::min(std::max((in + 3),0.0f),6.0f)) / 6;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">break</span>;</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; <span class="keywordflow">default</span>:</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">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</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"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div></div><!-- fragment -->
5782</div>
5783</div>
5784<a id="ad10d72a6f8859949bbe6134c638ce171"></a>
5785<h2 class="memtitle"><span class="permalink"><a href="#ad10d72a6f8859949bbe6134c638ce171">&#9670;&nbsp;</a></span>Activation() <span class="overload">[2/2]</span></h2>
5786
5787<div class="memitem">
5788<div class="memproto">
5789 <table class="memname">
5790 <tr>
5791 <td class="memname">void Activation </td>
5792 <td>(</td>
5793 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
5794 <td class="paramname"><em>in</em>, </td>
5795 </tr>
5796 <tr>
5797 <td class="paramkey"></td>
5798 <td></td>
5799 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
5800 <td class="paramname"><em>out</em>, </td>
5801 </tr>
5802 <tr>
5803 <td class="paramkey"></td>
5804 <td></td>
5805 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
5806 <td class="paramname"><em>tensorInfo</em>, </td>
5807 </tr>
5808 <tr>
5809 <td class="paramkey"></td>
5810 <td></td>
5811 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
5812 <td class="paramname"><em>function</em>, </td>
5813 </tr>
5814 <tr>
5815 <td class="paramkey"></td>
5816 <td></td>
5817 <td class="paramtype">float&#160;</td>
5818 <td class="paramname"><em>a</em>, </td>
5819 </tr>
5820 <tr>
5821 <td class="paramkey"></td>
5822 <td></td>
5823 <td class="paramtype">float&#160;</td>
5824 <td class="paramname"><em>b</em>&#160;</td>
5825 </tr>
5826 <tr>
5827 <td></td>
5828 <td>)</td>
5829 <td></td><td></td>
5830 </tr>
5831 </table>
5832</div><div class="memdoc">
5833
5834<p class="definition">Definition at line <a class="el" href="_activation_8cpp_source.xhtml#l00095">95</a> of file <a class="el" href="_activation_8cpp_source.xhtml">Activation.cpp</a>.</p>
5835
5836<p class="reference">References <a class="el" href="_activation_8cpp_source.xhtml#l00013">Activation()</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
5837<div class="fragment"><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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = tensorInfo.GetNumElements();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(<a class="code" href="namespacearmnn.xhtml#ad10d72a6f8859949bbe6134c638ce171">Activation</a>(in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>(), <span class="keyword">function</span>, a, b));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; ++in;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; ++out;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; in -= numElements;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; out -= numElements;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
5838<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
5839<div class="ttc" id="namespacearmnn_xhtml_ad10d72a6f8859949bbe6134c638ce171"><div class="ttname"><a href="namespacearmnn.xhtml#ad10d72a6f8859949bbe6134c638ce171">armnn::Activation</a></div><div class="ttdeci">void Activation(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;tensorInfo, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.xhtml#l00095">Activation.cpp:95</a></div></div>
5840</div><!-- fragment -->
5841</div>
5842</div>
5843<a id="ae8dcbb74cf0c855724f12833a55a5684"></a>
5844<h2 class="memtitle"><span class="permalink"><a href="#ae8dcbb74cf0c855724f12833a55a5684">&#9670;&nbsp;</a></span>AllocateOutputData()</h2>
5845
5846<div class="memitem">
5847<div class="memproto">
5848 <table class="memname">
5849 <tr>
5850 <td class="memname">void armnn::AllocateOutputData </td>
5851 <td>(</td>
5852 <td class="paramtype">unsigned int&#160;</td>
5853 <td class="paramname"><em>numOutput</em>, </td>
5854 </tr>
5855 <tr>
5856 <td class="paramkey"></td>
5857 <td></td>
5858 <td class="paramtype">unsigned int&#160;</td>
5859 <td class="paramname"><em>numSelected</em>, </td>
5860 </tr>
5861 <tr>
5862 <td class="paramkey"></td>
5863 <td></td>
5864 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
5865 <td class="paramname"><em>boxCorners</em>, </td>
5866 </tr>
5867 <tr>
5868 <td class="paramkey"></td>
5869 <td></td>
5870 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5871 <td class="paramname"><em>outputIndices</em>, </td>
5872 </tr>
5873 <tr>
5874 <td class="paramkey"></td>
5875 <td></td>
5876 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5877 <td class="paramname"><em>selectedBoxes</em>, </td>
5878 </tr>
5879 <tr>
5880 <td class="paramkey"></td>
5881 <td></td>
5882 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
5883 <td class="paramname"><em>selectedClasses</em>, </td>
5884 </tr>
5885 <tr>
5886 <td class="paramkey"></td>
5887 <td></td>
5888 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
5889 <td class="paramname"><em>selectedScores</em>, </td>
5890 </tr>
5891 <tr>
5892 <td class="paramkey"></td>
5893 <td></td>
5894 <td class="paramtype">float *&#160;</td>
5895 <td class="paramname"><em>detectionBoxes</em>, </td>
5896 </tr>
5897 <tr>
5898 <td class="paramkey"></td>
5899 <td></td>
5900 <td class="paramtype">float *&#160;</td>
5901 <td class="paramname"><em>detectionScores</em>, </td>
5902 </tr>
5903 <tr>
5904 <td class="paramkey"></td>
5905 <td></td>
5906 <td class="paramtype">float *&#160;</td>
5907 <td class="paramname"><em>detectionClasses</em>, </td>
5908 </tr>
5909 <tr>
5910 <td class="paramkey"></td>
5911 <td></td>
5912 <td class="paramtype">float *&#160;</td>
5913 <td class="paramname"><em>numDetections</em>&#160;</td>
5914 </tr>
5915 <tr>
5916 <td></td>
5917 <td>)</td>
5918 <td></td><td></td>
5919 </tr>
5920 </table>
5921</div><div class="memdoc">
5922
5923<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00103">103</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
5924
5925<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
5926
5927<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>.</p>
5928<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutput; ++i)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxIndex = i * 4;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (i &lt; numSelected)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> boxCornorIndex = selectedBoxes[outputIndices[i]] * 4;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; detectionScores[i] = selectedScores[outputIndices[i]];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; detectionClasses[i] = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(selectedClasses[outputIndices[i]]);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; detectionBoxes[boxIndex] = boxCorners[boxCornorIndex];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; detectionBoxes[boxIndex + 1] = boxCorners[boxCornorIndex + 1];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; detectionBoxes[boxIndex + 2] = boxCorners[boxCornorIndex + 2];</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; detectionBoxes[boxIndex + 3] = boxCorners[boxCornorIndex + 3];</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">else</span></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; detectionScores[i] = 0.0f;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; detectionClasses[i] = 0.0f;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; detectionBoxes[boxIndex] = 0.0f;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; detectionBoxes[boxIndex + 1] = 0.0f;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; detectionBoxes[boxIndex + 2] = 0.0f;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; detectionBoxes[boxIndex + 3] = 0.0f;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; numDetections[0] = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(numSelected);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
5929</div><!-- fragment -->
5930</div>
5931</div>
5932<a id="a5980f7b42f4df041efebdc6ae242f686"></a>
5933<h2 class="memtitle"><span class="permalink"><a href="#a5980f7b42f4df041efebdc6ae242f686">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[1/2]</span></h2>
5934
5935<div class="memitem">
5936<div class="memproto">
5937 <table class="memname">
5938 <tr>
5939 <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
5940 <td>(</td>
5941 <td class="paramtype">T&#160;</td>
5942 <td class="paramname"></td><td>)</td>
5943 <td></td>
5944 </tr>
5945 </table>
5946</div><div class="memdoc">
5947
5948<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00058">58</a> of file <a class="el" href="_layer_support_rules_8hpp_source.xhtml">LayerSupportRules.hpp</a>.</p>
5949
5950<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00064">AllTypesAreEqualImpl()</a>, and <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00074">TypesAreEqual::TypesAreEqual()</a>.</p>
5951<div class="fragment"><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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div></div><!-- fragment -->
5952</div>
5953</div>
5954<a id="a2a0bcfb4df0a03357b4cbb8d9e89a3da"></a>
5955<h2 class="memtitle"><span class="permalink"><a href="#a2a0bcfb4df0a03357b4cbb8d9e89a3da">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[2/2]</span></h2>
5956
5957<div class="memitem">
5958<div class="memproto">
5959 <table class="memname">
5960 <tr>
5961 <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
5962 <td>(</td>
5963 <td class="paramtype">T&#160;</td>
5964 <td class="paramname"><em>t1</em>, </td>
5965 </tr>
5966 <tr>
5967 <td class="paramkey"></td>
5968 <td></td>
5969 <td class="paramtype">T&#160;</td>
5970 <td class="paramname"><em>t2</em>, </td>
5971 </tr>
5972 <tr>
5973 <td class="paramkey"></td>
5974 <td></td>
5975 <td class="paramtype">Rest...&#160;</td>
5976 <td class="paramname"><em>rest</em>&#160;</td>
5977 </tr>
5978 <tr>
5979 <td></td>
5980 <td>)</td>
5981 <td></td><td></td>
5982 </tr>
5983 </table>
5984</div><div class="memdoc">
5985
5986<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00064">64</a> of file <a class="el" href="_layer_support_rules_8hpp_source.xhtml">LayerSupportRules.hpp</a>.</p>
5987
5988<p class="reference">References <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00058">AllTypesAreEqualImpl()</a>.</p>
5989<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; static_assert(std::is_same&lt;T, TensorInfo&gt;::value, <span class="stringliteral">&quot;Type T must be a TensorInfo&quot;</span>);</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; <span class="keywordflow">return</span> (t1.GetDataType() == t2.GetDataType()) &amp;&amp; <a class="code" href="namespacearmnn.xhtml#a2a0bcfb4df0a03357b4cbb8d9e89a3da">AllTypesAreEqualImpl</a>(t2, rest...);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a2a0bcfb4df0a03357b4cbb8d9e89a3da"><div class="ttname"><a href="namespacearmnn.xhtml#a2a0bcfb4df0a03357b4cbb8d9e89a3da">armnn::AllTypesAreEqualImpl</a></div><div class="ttdeci">bool AllTypesAreEqualImpl(T t1, T t2, Rest... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_rules_8hpp_source.xhtml#l00064">LayerSupportRules.hpp:64</a></div></div>
5990</div><!-- fragment -->
5991</div>
5992</div>
5993<a id="a4907f6b88c3e72be6b8ae876de355e0a"></a>
5994<h2 class="memtitle"><span class="permalink"><a href="#a4907f6b88c3e72be6b8ae876de355e0a">&#9670;&nbsp;</a></span>Append() <span class="overload">[1/2]</span></h2>
5995
5996<div class="memitem">
5997<div class="memproto">
5998 <table class="memname">
5999 <tr>
6000 <td class="memname">void armnn::Append </td>
6001 <td>(</td>
6002 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
6003 <td class="paramname"><em>optimizations</em>, </td>
6004 </tr>
6005 <tr>
6006 <td class="paramkey"></td>
6007 <td></td>
6008 <td class="paramtype">T &amp;&amp;&#160;</td>
6009 <td class="paramname"><em>optimization</em>&#160;</td>
6010 </tr>
6011 <tr>
6012 <td></td>
6013 <td>)</td>
6014 <td></td><td></td>
6015 </tr>
6016 </table>
6017</div><div class="memdoc">
6018
6019<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.xhtml#l00030">30</a> of file <a class="el" href="_optimizer_8hpp_source.xhtml">Optimizer.hpp</a>.</p>
6020
6021<p class="reference">Referenced by <a class="el" href="_optimizer_8hpp_source.xhtml#l00036">Append()</a>, and <a class="el" href="_optimizer_8hpp_source.xhtml#l00043">MakeOptimizations()</a>.</p>
6022<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; optimizations.emplace_back(<span class="keyword">new</span> T(optimization));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;};</div></div><!-- fragment -->
6023</div>
6024</div>
6025<a id="a0c8a28b71e49c04596289ff281e58f1a"></a>
6026<h2 class="memtitle"><span class="permalink"><a href="#a0c8a28b71e49c04596289ff281e58f1a">&#9670;&nbsp;</a></span>Append() <span class="overload">[2/2]</span></h2>
6027
6028<div class="memitem">
6029<div class="memproto">
6030 <table class="memname">
6031 <tr>
6032 <td class="memname">void armnn::Append </td>
6033 <td>(</td>
6034 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
6035 <td class="paramname"><em>optimizations</em>, </td>
6036 </tr>
6037 <tr>
6038 <td class="paramkey"></td>
6039 <td></td>
6040 <td class="paramtype">Front &amp;&amp;&#160;</td>
6041 <td class="paramname"><em>front</em>, </td>
6042 </tr>
6043 <tr>
6044 <td class="paramkey"></td>
6045 <td></td>
6046 <td class="paramtype">Others &amp;&amp;...&#160;</td>
6047 <td class="paramname"><em>others</em>&#160;</td>
6048 </tr>
6049 <tr>
6050 <td></td>
6051 <td>)</td>
6052 <td></td><td></td>
6053 </tr>
6054 </table>
6055</div><div class="memdoc">
6056
6057<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.xhtml#l00036">36</a> of file <a class="el" href="_optimizer_8hpp_source.xhtml">Optimizer.hpp</a>.</p>
6058
6059<p class="reference">References <a class="el" href="_optimizer_8hpp_source.xhtml#l00030">Append()</a>.</p>
6060<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; Append&lt;Front&gt;(optimizations, std::forward&lt;Front&gt;(front));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0c8a28b71e49c04596289ff281e58f1a">Append</a>&lt;Others...&gt;(optimizations, std::forward&lt;Others&gt;(others)...);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;};</div><div class="ttc" id="namespacearmnn_xhtml_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.xhtml#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.xhtml#l00036">Optimizer.hpp:36</a></div></div>
6061</div><!-- fragment -->
6062</div>
6063</div>
6064<a id="ae97734279fd10b4c754cc15bc8ed9dad"></a>
6065<h2 class="memtitle"><span class="permalink"><a href="#ae97734279fd10b4c754cc15bc8ed9dad">&#9670;&nbsp;</a></span>ApplyBackendOptimizations()</h2>
6066
6067<div class="memitem">
6068<div class="memproto">
6069 <table class="memname">
6070 <tr>
6071 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::ApplyBackendOptimizations </td>
6072 <td>(</td>
6073 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
6074 <td class="paramname"><em>optNetObjPtr</em>, </td>
6075 </tr>
6076 <tr>
6077 <td class="paramkey"></td>
6078 <td></td>
6079 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
6080 <td class="paramname"><em>backendSettings</em>, </td>
6081 </tr>
6082 <tr>
6083 <td class="paramkey"></td>
6084 <td></td>
6085 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
6086 <td class="paramname"><em>backends</em>, </td>
6087 </tr>
6088 <tr>
6089 <td class="paramkey"></td>
6090 <td></td>
6091 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
6092 <td class="paramname"><em>errMessages</em>&#160;</td>
6093 </tr>
6094 <tr>
6095 <td></td>
6096 <td>)</td>
6097 <td></td><td></td>
6098 </tr>
6099 </table>
6100</div><div class="memdoc">
6101
6102<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00428">428</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
6103
6104<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00164">SubgraphView::begin()</a>, <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00169">SubgraphView::end()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00050">OptimizationViews::GetFailedSubgraphs()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00276">OptimizedNetwork::GetGraph()</a>, <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00049">OptimizationViews::GetSubstitutions()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="_network_8hpp_source.xhtml#l00288">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00021">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.xhtml#l00087">ReportWarning()</a>, <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00254">SubgraphViewSelector::SelectSubgraphs()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00396">Graph::SubstituteSubgraph()</a>, and <a class="el" href="_optimization_views_8cpp_source.xhtml#l00011">OptimizationViews::Validate()</a>.</p>
6105
6106<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
6107<div class="fragment"><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; BOOST_ASSERT(optNetObjPtr);</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; OptimizationResult result;</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; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// Run backend specific optimizations</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SelectedBackends)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">auto</span> backendObjPtr = backends.find(selectedBackend)-&gt;second.get();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; BOOST_ASSERT(backendObjPtr);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="comment">// Select sub-graphs based on backend</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; SubgraphViewSelector::Subgraphs subgraphs =</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; SubgraphViewSelector::SelectSubgraphs(optGraph,</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="comment">// Select layers assigned to the requested backend</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; [&amp;backendObjPtr](<span class="keyword">const</span> Layer&amp; layer)</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; <span class="keywordflow">return</span> layer.GetType() != LayerType::Input &amp;&amp;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; layer.GetType() != LayerType::Output &amp;&amp;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; layer.GetBackendId() == backendObjPtr-&gt;GetId();</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">if</span> (subgraphs.empty())</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; <span class="comment">// No sub-graphs found, try with next selected backend</span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">// Try to optimize each sub-graph</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; subgraph : subgraphs)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// Try to optimize the current sub-graph</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; OptimizationViews optimizationViews = backendObjPtr-&gt;OptimizeSubgraphView(*subgraph);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; BOOST_ASSERT(optimizationViews.Validate(*subgraph));</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; <span class="comment">// Optimization attempted, check the resulting optimized sub-graph</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; substitution : optimizationViews.GetSubstitutions())</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// Sub-graph optimized, substitute the sub-graph with the new optimized one in the main optimized graph</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; SubgraphView&amp; replacementSubgraph = substitution.m_ReplacementSubgraph;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; SubgraphView&amp; substitutableSubgraph = substitution.m_SubstitutableSubgraph;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; optGraph.SubstituteSubgraph(substitutableSubgraph, replacementSubgraph);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="comment">// Assign the current backend to the optimized sub-graph</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::for_each(replacementSubgraph.begin(), replacementSubgraph.end(), [&amp;selectedBackend](Layer* l)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; BOOST_ASSERT(l);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; l-&gt;SetBackendId(selectedBackend);</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; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (!optimizationViews.GetFailedSubgraphs().empty())</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; std::stringstream warningMsg;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; warningMsg &lt;&lt; <span class="stringliteral">&quot;Some sub-graph(s) failed to optimized on &quot;</span> &lt;&lt; backendObjPtr-&gt;GetId() &lt;&lt; <span class="stringliteral">&quot; backend.&quot;</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</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="comment">// Failed to optimize the given sub-graph, re-assign the sub-graph layers to other available backends</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; BackendSettings settingsCopy(backendSettings);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (!backendObjPtr-&gt;GetId().IsCpuRef())</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="comment">// Add the current backend to the list of backends to ignore</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; settingsCopy.m_IgnoredBackends.insert(backendObjPtr-&gt;GetId());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</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; <span class="keywordtype">int</span> count=0;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; failedSubgraph : optimizationViews.GetFailedSubgraphs())</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; {</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// An error occurred: the optimization was attempted but not performed, try different backends</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; std::stringstream subgraphMsg;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; subgraphMsg &lt;&lt; <span class="stringliteral">&quot;Re-assigning backends to &quot;</span> &lt;&lt; failedSubgraph.GetLayers().size()</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; &lt;&lt; <span class="stringliteral">&quot; layers inside sub-graph &quot;</span> &lt;&lt; count++;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(subgraphMsg.str(), errMessages);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; OptimizationResult reassignmentResult = <a class="code" href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; settingsCopy,</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; *subgraph,</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; errMessages);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (reassignmentResult.m_Error)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">// Failed to re-assign one of the remaining backends to each layer of the sub-graph</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">armnn::ReportWarning</a></div><div class="ttdeci">void ReportWarning(const std::string &amp;warningMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00087">Network.cpp:87</a></div></div>
6108<div class="ttc" id="namespacearmnn_xhtml_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00395">Network.cpp:395</a></div></div>
6109</div><!-- fragment -->
6110</div>
6111</div>
6112<a id="a374120de442fe42c26536bb4f1e2a5a1"></a>
6113<h2 class="memtitle"><span class="permalink"><a href="#a374120de442fe42c26536bb4f1e2a5a1">&#9670;&nbsp;</a></span>ArgMinMax()</h2>
6114
6115<div class="memitem">
6116<div class="memproto">
6117 <table class="memname">
6118 <tr>
6119 <td class="memname">void ArgMinMax </td>
6120 <td>(</td>
6121 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6122 <td class="paramname"><em>in</em>, </td>
6123 </tr>
6124 <tr>
6125 <td class="paramkey"></td>
6126 <td></td>
6127 <td class="paramtype">int32_t *&#160;</td>
6128 <td class="paramname"><em>out</em>, </td>
6129 </tr>
6130 <tr>
6131 <td class="paramkey"></td>
6132 <td></td>
6133 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
6134 <td class="paramname"><em>inputTensorInfo</em>, </td>
6135 </tr>
6136 <tr>
6137 <td class="paramkey"></td>
6138 <td></td>
6139 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
6140 <td class="paramname"><em>outputTensorInfo</em>, </td>
6141 </tr>
6142 <tr>
6143 <td class="paramkey"></td>
6144 <td></td>
6145 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
6146 <td class="paramname"><em>function</em>, </td>
6147 </tr>
6148 <tr>
6149 <td class="paramkey"></td>
6150 <td></td>
6151 <td class="paramtype">int&#160;</td>
6152 <td class="paramname"><em>axis</em>&#160;</td>
6153 </tr>
6154 <tr>
6155 <td></td>
6156 <td>)</td>
6157 <td></td><td></td>
6158 </tr>
6159 </table>
6160</div><div class="memdoc">
6161
6162<p class="definition">Definition at line <a class="el" href="_arg_min_max_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_arg_min_max_8cpp_source.xhtml">ArgMinMax.cpp</a>.</p>
6163
6164<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00127">armnnUtils::GetUnsignedAxis()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>, and <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
6165
6166<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l00299">BOOST_AUTO_TEST_CASE()</a>.</p>
6167<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(outputTensorInfo);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = <a class="code" href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(inputTensorInfo.GetNumDimensions(), axis);</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerElements = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(), 0, uAxis);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputTensorInfo.GetShape()[uAxis];</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerElements = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputTensorInfo.GetShape(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; uAxis + 1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; inputTensorInfo.GetNumDimensions());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerElements; ++outer) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerElements; ++inner) {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; in[outer * axisSize * innerElements + inner];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">auto</span> tmpValue = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tmpIndex = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; axisSize; ++i) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; in[(outer * axisSize * innerElements) + (i * innerElements) + inner];</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; value = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> ((<span class="keyword">function</span> == <a class="code" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a> &amp;&amp; value &lt; tmpValue) ||</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; (<span class="keyword">function</span> == <a class="code" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a> &amp;&amp; value &gt; tmpValue)) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; tmpValue = value;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; tmpIndex = i;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; out[outer * innerElements + inner] = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(tmpIndex);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00113">TensorUtils.cpp:113</a></div></div>
6168<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>
6169<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
6170<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></div>
6171<div class="ttc" id="namespacearmnn_utils_xhtml_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00127">TensorUtils.cpp:127</a></div></div>
6172<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
6173<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
6174</div><!-- fragment -->
6175</div>
6176</div>
6177<a id="a8acab870a91373c720c9822b59ecf3b8"></a>
6178<h2 class="memtitle"><span class="permalink"><a href="#a8acab870a91373c720c9822b59ecf3b8">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[1/2]</span></h2>
6179
6180<div class="memitem">
6181<div class="memproto">
6182 <table class="memname">
6183 <tr>
6184 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> AssignBackends </td>
6185 <td>(</td>
6186 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
6187 <td class="paramname"><em>optNetObjPtr</em>, </td>
6188 </tr>
6189 <tr>
6190 <td class="paramkey"></td>
6191 <td></td>
6192 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
6193 <td class="paramname"><em>backendSettings</em>, </td>
6194 </tr>
6195 <tr>
6196 <td class="paramkey"></td>
6197 <td></td>
6198 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
6199 <td class="paramname"><em>firstLayer</em>, </td>
6200 </tr>
6201 <tr>
6202 <td class="paramkey"></td>
6203 <td></td>
6204 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
6205 <td class="paramname"><em>lastLayer</em>, </td>
6206 </tr>
6207 <tr>
6208 <td class="paramkey"></td>
6209 <td></td>
6210 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
6211 <td class="paramname"><em>errMessages</em>&#160;</td>
6212 </tr>
6213 <tr>
6214 <td></td>
6215 <td>)</td>
6216 <td></td><td></td>
6217 </tr>
6218 </table>
6219</div><div class="memdoc">
6220
6221<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00269">269</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
6222
6223<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00114">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00066">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00276">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00045">BackendSettings::IsBackendSupported()</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00060">BackendSettings::IsCpuRefUsed()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00301">OptimizationResult::IsError()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00299">OptimizationResult::IsOk()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00300">OptimizationResult::IsWarningOnly()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00288">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00021">BackendSettings::m_SelectedBackends</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="_network_8cpp_source.xhtml#l00075">ReportError()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00099">ReturnWithError()</a>.</p>
6224
6225<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00428">ApplyBackendOptimizations()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00395">AssignBackends()</a>, <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00685">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
6226<div class="fragment"><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; OptimizationResult result;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">auto</span> ReturnError = [&amp;](<span class="keyword">const</span> Layer* layer)</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a>(result, layer, backendSettings, errMessages);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; };</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">auto</span> availablePreferredBackends = backendSettings.GetAvailablePreferredBackends();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (availablePreferredBackends.empty())</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; std::stringstream failureMsg;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;No preferred backends are available&quot;</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = firstLayer; it != lastLayer; ++it)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">auto</span> layer = *it;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeIn = layer-&gt;GetNumInputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; layer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo().GetDataType();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> dataTypeOut = layer-&gt;GetNumOutputSlots() == 0 ? DataType::Float32 :</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; layer-&gt;GetOutputSlot(0).GetTensorInfo().GetDataType();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; std::string reasonIfUnsupported;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">CheckScaleSetOnQuantizedType</a>(layer, errMessages))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// don&#39;t bomb immediately, find all the quantized outputs</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// which haven&#39;t had a scale set and report them all back.</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; result.m_Error = <span class="keyword">true</span>;</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;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// First try assign layer to hint backend</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">if</span> (layer-&gt;GetBackendHint().has_value() &amp;&amp;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; backendSettings.IsBackendSupported(layer-&gt;GetBackendHint().value()) &amp;&amp;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a>(backendSettings,</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; optNetObjPtr-&gt;GetGraph(),</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; layer,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; layer-&gt;GetBackendHint().value(),</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; dataTypeIn,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; dataTypeOut,</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; availablePreferredBackends,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; reasonIfUnsupported,</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; errMessages).IsOk())</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; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; backendSettings.m_SelectedBackends.insert(layer-&gt;GetBackendHint().value());</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// Try assign layer to prefered list of backends</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</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; <span class="keywordflow">if</span> (layer-&gt;GetBackendHint().has_value() &amp;&amp;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; layer-&gt;GetBackendHint().value() == backend)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">continue</span>; <span class="comment">//Don&#39;t re-test the backend hint</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</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; OptimizationResult res = <a class="code" href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">AttemptBackendAssignment</a>(backendSettings,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; optNetObjPtr-&gt;GetGraph(),</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; layer,</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; backend,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; dataTypeIn,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; dataTypeOut,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; availablePreferredBackends,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; reasonIfUnsupported,</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; errMessages);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span> (res.IsOk())</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; found = <span class="keyword">true</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; backendSettings.m_SelectedBackends.insert(backend);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (res.IsError())</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> res; <span class="comment">// Cannot continue.</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// Note: we don&#39;t need to log the error as it would already</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="comment">// be logged in AttemptBackendAssignment().</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">else</span></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; BOOST_ASSERT_MSG(res.IsWarningOnly(), <span class="stringliteral">&quot;OptimizationResult in unexpected state.&quot;</span>);</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; }</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;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// If the layer is unsupported by any devices, log and return a null network.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (!found)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// NOTE: if the layer is not an operation queue type AND we have not got CpuRef as a</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// fallback we should set the compute device on the layer to CpuRef (these are not</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// available as accelerated operations, or are only available under certain</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="comment">// conditions, currently they comprise MemCopy, Constant, Permute)</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a> layerType = layer-&gt;GetType();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span> (!backendSettings.IsCpuRefUsed() &amp;&amp; (layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a> ||</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a> ||</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; layerType == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a>))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; BackendId cpuBackendId(<a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; layer-&gt;SetBackendId(cpuBackendId);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; backendSettings.m_SelectedBackends.insert(cpuBackendId);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">return</span> ReturnError(layer);</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; }</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;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00075">Network.cpp:75</a></div></div>
6227<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
6228<div class="ttc" id="namespacearmnn_xhtml_ae50fff9aa2a1ce46392d8641c10aa3bc"><div class="ttname"><a href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">armnn::ReturnWithError</a></div><div class="ttdeci">OptimizationResult ReturnWithError(OptimizationResult res, const Layer *layer, const BackendSettings &amp;backendSettings, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00099">Network.cpp:99</a></div></div>
6229<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
6230<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a></div></div>
6231<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
6232<div class="ttc" id="namespacearmnn_xhtml_af002111f64aee648e3258247075cae36"><div class="ttname"><a href="namespacearmnn.xhtml#af002111f64aee648e3258247075cae36">armnn::CheckScaleSetOnQuantizedType</a></div><div class="ttdeci">bool CheckScaleSetOnQuantizedType(Layer *layer, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00114">Network.cpp:114</a></div></div>
6233<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
6234<div class="ttc" id="namespacearmnn_xhtml_a56f168327453ea4461cbc1c0ac7f15b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56f168327453ea4461cbc1c0ac7f15b6">armnn::AttemptBackendAssignment</a></div><div class="ttdeci">OptimizationResult AttemptBackendAssignment(BackendSettings &amp;backendSettings, Graph &amp;graph, Layer *layer, BackendId backend, DataType dataTypeIn, DataType dataTypeOut, const std::vector&lt; BackendId &gt; &amp;availablePreferredBackends, std::string &amp;reasonIfUnsupported, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00149">Network.cpp:149</a></div></div>
6235<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">armnn::LayerType</a></div><div class="ttdeci">LayerType</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00014">InternalTypes.hpp:14</a></div></div>
6236</div><!-- fragment -->
6237</div>
6238</div>
6239<a id="a76dca645d0d0665f74e171bbc1901469"></a>
6240<h2 class="memtitle"><span class="permalink"><a href="#a76dca645d0d0665f74e171bbc1901469">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[2/2]</span></h2>
6241
6242<div class="memitem">
6243<div class="memproto">
6244 <table class="memname">
6245 <tr>
6246 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::AssignBackends </td>
6247 <td>(</td>
6248 <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
6249 <td class="paramname"><em>optNetObjPtr</em>, </td>
6250 </tr>
6251 <tr>
6252 <td class="paramkey"></td>
6253 <td></td>
6254 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
6255 <td class="paramname"><em>backendSettings</em>, </td>
6256 </tr>
6257 <tr>
6258 <td class="paramkey"></td>
6259 <td></td>
6260 <td class="paramtype"><a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> &amp;&#160;</td>
6261 <td class="paramname"><em>subgraph</em>, </td>
6262 </tr>
6263 <tr>
6264 <td class="paramkey"></td>
6265 <td></td>
6266 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
6267 <td class="paramname"><em>errMessages</em>&#160;</td>
6268 </tr>
6269 <tr>
6270 <td></td>
6271 <td>)</td>
6272 <td></td><td></td>
6273 </tr>
6274 </table>
6275</div><div class="memdoc">
6276
6277<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00395">395</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
6278
6279<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>, <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00164">SubgraphView::begin()</a>, and <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00169">SubgraphView::end()</a>.</p>
6280<div class="fragment"><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; Graph::Iterator firstLayer = subgraph.begin();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; Graph::Iterator lastLayer = subgraph.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; backendSettings,</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; firstLayer,</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; lastLayer,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; errMessages);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00395">Network.cpp:395</a></div></div>
6281</div><!-- fragment -->
6282</div>
6283</div>
6284<a id="a09ff1f6670d27d3b41e5b5d35a6c9f37"></a>
6285<h2 class="memtitle"><span class="permalink"><a href="#a09ff1f6670d27d3b41e5b5d35a6c9f37">&#9670;&nbsp;</a></span>AssignSplitId()</h2>
6286
6287<div class="memitem">
6288<div class="memproto">
6289 <table class="memname">
6290 <tr>
6291 <td class="memname">void armnn::AssignSplitId </td>
6292 <td>(</td>
6293 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
6294 <td class="paramname"><em>layerInfos</em>, </td>
6295 </tr>
6296 <tr>
6297 <td class="paramkey"></td>
6298 <td></td>
6299 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
6300 <td class="paramname"><em>layerInfo</em>&#160;</td>
6301 </tr>
6302 <tr>
6303 <td></td>
6304 <td>)</td>
6305 <td></td><td></td>
6306 </tr>
6307 </table>
6308</div><div class="memdoc">
6309
6310<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00304">304</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml">SubgraphViewSelector.cpp</a>.</p>
6311
6312<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00262">ForEachLayerInput()</a>.</p>
6313
6314<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
6315<div class="fragment"><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="comment">// Check each input to see if we can attach ourselves to any of the subgraphs that have already been assigned.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// We can only attach ourselves to the subgraph from this input if there isn&#39;t a cut here.</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_IsSelected == parentInfo.m_IsSelected)</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">// We also need to check that merging into this subgraph won&#39;t cause a dependency cycle between subgraphs.</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// This will be the case if the subgraph that we will become part of is already a dependency</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="comment">// of one of the subgraphs that are input to this layer, e.g:</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; <span class="comment">// 0 | The numbers (0, 1) are the subgraph IDs of each layer and we are looking at layer X.</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// / \ |</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">// 1 0 | We can&#39;t merge X into subgraph 0, because the left-hand input already depends on subgraph 0.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// \ / | We can however merge X into subgraph 1.</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// X |</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; bool dependenciesOk = true;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; ForEachLayerInput(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; otherParentInfo)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// We call HasAntecedent() ~ n^2 times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// Hence it is important that this is efficient - see PartialSubgraph class description.</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; if (otherParentInfo.m_Subgraph-&gt;HasAntecedent(parentInfo.m_Subgraph.get()))</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; dependenciesOk = false;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</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;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (dependenciesOk)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// Merge into the subgraph of this input. If we have already been merged into another subgraph</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">// (from another input of this layer), then merge both of them together.</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; layerInfo.m_Subgraph = parentInfo.m_Subgraph;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">else</span></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; <span class="comment">// We call MergeWith() ~ n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; layerInfo.m_Subgraph-&gt;MergeWith(parentInfo.m_Subgraph.get());</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; }</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; });</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="comment">// If we weren&#39;t able to merge into an existing subgraph then we need to make a new one</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (layerInfo.m_Subgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; layerInfo.m_Subgraph = std::make_shared&lt;PartialSubgraph&gt;();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Record dependencies of the chosen subgraph based on the inputs of this layer.</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo, [&amp;](LayerSelectionInfo&amp; parentInfo)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="comment">// These functions are called ~n times, where n is the number of inputs to this layer.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="comment">// Therefore it does not need to be as performant as HasAntecedent().</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span> (!layerInfo.m_Subgraph-&gt;IsMergedWith(parentInfo.m_Subgraph.get()))</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; layerInfo.m_Subgraph-&gt;AddDirectAntecedent(parentInfo.m_Subgraph.get());</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; });</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.xhtml#l00262">SubgraphViewSelector.cpp:262</a></div></div>
6316</div><!-- fragment -->
6317</div>
6318</div>
6319<a id="a56f168327453ea4461cbc1c0ac7f15b6"></a>
6320<h2 class="memtitle"><span class="permalink"><a href="#a56f168327453ea4461cbc1c0ac7f15b6">&#9670;&nbsp;</a></span>AttemptBackendAssignment()</h2>
6321
6322<div class="memitem">
6323<div class="memproto">
6324 <table class="memname">
6325 <tr>
6326 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::AttemptBackendAssignment </td>
6327 <td>(</td>
6328 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
6329 <td class="paramname"><em>backendSettings</em>, </td>
6330 </tr>
6331 <tr>
6332 <td class="paramkey"></td>
6333 <td></td>
6334 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
6335 <td class="paramname"><em>graph</em>, </td>
6336 </tr>
6337 <tr>
6338 <td class="paramkey"></td>
6339 <td></td>
6340 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
6341 <td class="paramname"><em>layer</em>, </td>
6342 </tr>
6343 <tr>
6344 <td class="paramkey"></td>
6345 <td></td>
6346 <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&#160;</td>
6347 <td class="paramname"><em>backend</em>, </td>
6348 </tr>
6349 <tr>
6350 <td class="paramkey"></td>
6351 <td></td>
6352 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
6353 <td class="paramname"><em>dataTypeIn</em>, </td>
6354 </tr>
6355 <tr>
6356 <td class="paramkey"></td>
6357 <td></td>
6358 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
6359 <td class="paramname"><em>dataTypeOut</em>, </td>
6360 </tr>
6361 <tr>
6362 <td class="paramkey"></td>
6363 <td></td>
6364 <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
6365 <td class="paramname"><em>availablePreferredBackends</em>, </td>
6366 </tr>
6367 <tr>
6368 <td class="paramkey"></td>
6369 <td></td>
6370 <td class="paramtype">std::string &amp;&#160;</td>
6371 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
6372 </tr>
6373 <tr>
6374 <td class="paramkey"></td>
6375 <td></td>
6376 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
6377 <td class="paramname"><em>errMessages</em>&#160;</td>
6378 </tr>
6379 <tr>
6380 <td></td>
6381 <td>)</td>
6382 <td></td><td></td>
6383 </tr>
6384 </table>
6385</div><div class="memdoc">
6386
6387<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00149">149</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
6388
6389<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_backend_id_8hpp_source.xhtml#l00136">BackendId::Get()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">GetDataTypeName()</a>, <a class="el" href="_internal_types_8cpp_source.xhtml#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="_network_utils_8cpp_source.xhtml#l00040">InsertConvertFp16ToFp32LayersBefore()</a>, <a class="el" href="_network_utils_8cpp_source.xhtml#l00079">InsertConvertFp32ToFp16LayersAfter()</a>, <a class="el" href="_workload_factory_8cpp_source.xhtml#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00087">ReportWarning()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00099">ReturnWithError()</a>, and <a class="el" href="_layer_8hpp_source.xhtml#l00264">Layer::SetBackendId()</a>.</p>
6390
6391<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>.</p>
6392<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; OptimizationResult result;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="comment">// Helper lambda to compose meaningful error message before returning with error</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">auto</span> ReturnError = [&amp;](<span class="keyword">const</span> Layer* layer)</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">ReturnWithError</a>(result, layer, backendSettings, errMessages);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; };</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// need to set the compute device on the layer</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// before we can check if it is supported</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (!IWorkloadFactory::IsLayerSupported(*layer, EmptyOptional(), reasonIfUnsupported))</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16 || dataTypeOut == DataType::Float16)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer, DataType::Float32, reasonIfUnsupported)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp32ToFp16</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &amp;&amp; layer-&gt;GetType() != LayerType::ConvertFp16ToFp32)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// Insert FP16 -&gt; FP32 conversion layer before current layer</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertFp16ToFp32Layers;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (dataTypeIn == DataType::Float16)</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; convertFp16ToFp32Layers =</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad31c56533e4f9f9f51719599fbfcf7bb">InsertConvertFp16ToFp32LayersBefore</a>(graph, *layer);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</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="comment">// Insert FP32 -&gt; FP16 conversion layer after current layer</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertFp32ToFp16Layers;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (dataTypeOut == DataType::Float16)</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; convertFp32ToFp16Layers =</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="namespacearmnn.xhtml#abf625e50a5eaeafce5b39580dc95a9d3">InsertConvertFp32ToFp16LayersAfter</a>(graph, *layer);</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;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Assign a supported backend to the newly introduced conversion layers</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keyword">auto</span> AssignFirstSupportedBackend = [&amp;](Layer* layer, BackendId preferredBackend)</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="keywordtype">bool</span> supportedBackendFound = <span class="keyword">false</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; std::string reasonIfUnsupported;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// Try preferred backend first</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; layer-&gt;SetBackendId(preferredBackend);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; reasonIfUnsupported))</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; backend : availablePreferredBackends)</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; <span class="comment">// Skip preferred backend (we already determined that it is not supported)</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (backend == preferredBackend)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; layer-&gt;SetBackendId(backend);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (IWorkloadFactory::IsLayerSupported(*layer,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; reasonIfUnsupported))</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; supportedBackendFound = <span class="keyword">true</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</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; }</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; <span class="keywordflow">return</span> supportedBackendFound;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">for</span> (ConvertFp16ToFp32Layer* convertLayer : convertFp16ToFp32Layers)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</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="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span> (ConvertFp32ToFp16Layer* convertLayer : convertFp32ToFp16Layers)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (!AssignFirstSupportedBackend(convertLayer, backend))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> ReturnError(convertLayer);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> result;</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; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; std::stringstream warningMsg;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; warningMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on requested backend &quot;</span> &lt;&lt; layer-&gt;GetBackendId().Get()</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for input data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeIn)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; &lt;&lt; <span class="stringliteral">&quot; and output data type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">GetDataTypeName</a>(dataTypeOut)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (reason: &quot;</span> &lt;&lt; reasonIfUnsupported</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; &lt;&lt; <span class="stringliteral">&quot;), falling back to the next backend.&quot;</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">ReportWarning</a>(warningMsg.str(), errMessages);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> OptimizationResult(<span class="keyword">true</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abf625e50a5eaeafce5b39580dc95a9d3"><div class="ttname"><a href="namespacearmnn.xhtml#abf625e50a5eaeafce5b39580dc95a9d3">armnn::InsertConvertFp32ToFp16LayersAfter</a></div><div class="ttdeci">std::vector&lt; ConvertFp32ToFp16Layer * &gt; InsertConvertFp32ToFp16LayersAfter(Graph &amp;graph, Layer &amp;layer)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00079">NetworkUtils.cpp:79</a></div></div>
6393<div class="ttc" id="namespacearmnn_xhtml_ad31c56533e4f9f9f51719599fbfcf7bb"><div class="ttname"><a href="namespacearmnn.xhtml#ad31c56533e4f9f9f51719599fbfcf7bb">armnn::InsertConvertFp16ToFp32LayersBefore</a></div><div class="ttdeci">std::vector&lt; ConvertFp16ToFp32Layer * &gt; InsertConvertFp16ToFp32LayersBefore(Graph &amp;graph, Layer &amp;layer, bool expectCorrectInputType)</div><div class="ttdef"><b>Definition:</b> <a href="_network_utils_8cpp_source.xhtml#l00040">NetworkUtils.cpp:40</a></div></div>
6394<div class="ttc" id="namespacearmnn_xhtml_ae50fff9aa2a1ce46392d8641c10aa3bc"><div class="ttname"><a href="namespacearmnn.xhtml#ae50fff9aa2a1ce46392d8641c10aa3bc">armnn::ReturnWithError</a></div><div class="ttdeci">OptimizationResult ReturnWithError(OptimizationResult res, const Layer *layer, const BackendSettings &amp;backendSettings, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00099">Network.cpp:99</a></div></div>
6395<div class="ttc" id="namespacearmnn_xhtml_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00168">TypesUtils.hpp:168</a></div></div>
6396<div class="ttc" id="namespacearmnn_xhtml_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.xhtml#l00013">InternalTypes.cpp:13</a></div></div>
6397<div class="ttc" id="namespacearmnn_xhtml_a38e626422579decc13e3ee37da1a84c9"><div class="ttname"><a href="namespacearmnn.xhtml#a38e626422579decc13e3ee37da1a84c9">armnn::ReportWarning</a></div><div class="ttdeci">void ReportWarning(const std::string &amp;warningMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; warningMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00087">Network.cpp:87</a></div></div>
6398</div><!-- fragment -->
6399</div>
6400</div>
6401<a id="ac2807505b850738bc8a1991ce669dd47"></a>
6402<h2 class="memtitle"><span class="permalink"><a href="#ac2807505b850738bc8a1991ce669dd47">&#9670;&nbsp;</a></span>BackendRegistryInstance()</h2>
6403
6404<div class="memitem">
6405<div class="memproto">
6406 <table class="memname">
6407 <tr>
6408 <td class="memname"><a class="el" href="classarmnn_1_1_backend_registry.xhtml">BackendRegistry</a> &amp; BackendRegistryInstance </td>
6409 <td>(</td>
6410 <td class="paramname"></td><td>)</td>
6411 <td></td>
6412 </tr>
6413 </table>
6414</div><div class="memdoc">
6415
6416<p class="definition">Definition at line <a class="el" href="_backend_registry_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_backend_registry_8cpp_source.xhtml">BackendRegistry.cpp</a>.</p>
6417
6418<p class="reference">Referenced by <a class="el" href="_inference_model_8hpp_source.xhtml#l00341">InferenceModel&lt; IParser, TDataType &gt;::AddCommandLineOptions()</a>, <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00685">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_common_test_utils_8cpp_source.xhtml#l00045">CreateBackendObject()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00409">CreateSupportedBackends()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.xhtml#l00314">DynamicBackendUtils::DeregisterDynamicBackends()</a>, <a class="el" href="_backend_helper_8cpp_source.xhtml#l00014">GetILayerSupportByBackendId()</a>, <a class="el" href="_workload_factory_8cpp_source.xhtml#l00045">IWorkloadFactory::IsLayerSupported()</a>, <a class="el" href="_execute_network_8cpp_source.xhtml#l00009">main()</a>, <a class="el" href="_loaded_network_8cpp_source.xhtml#l00085">LoadedNetwork::MakeLoadedNetwork()</a>, <a class="el" href="_mock_backend_8cpp_source.xhtml#l00070">MockBackendInitialiser::MockBackendInitialiser()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>, <a class="el" href="_dynamic_backend_utils_8cpp_source.xhtml#l00326">DynamicBackendUtils::RegisterDynamicBackends()</a>, <a class="el" href="_network_execution_utils_8hpp_source.xhtml#l00750">RunCsvTest()</a>, <a class="el" href="_runtime_8cpp_source.xhtml#l00155">Runtime::Runtime()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.xhtml#l01202">RuntimeEmptyTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.xhtml#l01331">RuntimeInvalidOverridePathTestImpl()</a>, <a class="el" href="_dynamic_backend_tests_8hpp_source.xhtml#l00094">TestBackendRegistry::TestBackendRegistry()</a>, <a class="el" href="_mock_backend_8cpp_source.xhtml#l00079">MockBackendInitialiser::~MockBackendInitialiser()</a>, and <a class="el" href="_dynamic_backend_tests_8hpp_source.xhtml#l00099">TestBackendRegistry::~TestBackendRegistry()</a>.</p>
6419<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">static</span> BackendRegistry instance;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">return</span> instance;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;}</div></div><!-- fragment -->
6420</div>
6421</div>
6422<a id="adc251e65d99405496d503811589e9a20"></a>
6423<h2 class="memtitle"><span class="permalink"><a href="#adc251e65d99405496d503811589e9a20">&#9670;&nbsp;</a></span>BatchNormImpl()</h2>
6424
6425<div class="memitem">
6426<div class="memproto">
6427 <table class="memname">
6428 <tr>
6429 <td class="memname">void BatchNormImpl </td>
6430 <td>(</td>
6431 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.xhtml">BatchNormalizationQueueDescriptor</a> &amp;&#160;</td>
6432 <td class="paramname"><em>data</em>, </td>
6433 </tr>
6434 <tr>
6435 <td class="paramkey"></td>
6436 <td></td>
6437 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6438 <td class="paramname"><em>meanDecoder</em>, </td>
6439 </tr>
6440 <tr>
6441 <td class="paramkey"></td>
6442 <td></td>
6443 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6444 <td class="paramname"><em>varianceDecoder</em>, </td>
6445 </tr>
6446 <tr>
6447 <td class="paramkey"></td>
6448 <td></td>
6449 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6450 <td class="paramname"><em>betaDecoder</em>, </td>
6451 </tr>
6452 <tr>
6453 <td class="paramkey"></td>
6454 <td></td>
6455 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6456 <td class="paramname"><em>gammaDecoder</em>, </td>
6457 </tr>
6458 <tr>
6459 <td class="paramkey"></td>
6460 <td></td>
6461 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6462 <td class="paramname"><em>inputDecoder</em>, </td>
6463 </tr>
6464 <tr>
6465 <td class="paramkey"></td>
6466 <td></td>
6467 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
6468 <td class="paramname"><em>outputEncoder</em>&#160;</td>
6469 </tr>
6470 <tr>
6471 <td></td>
6472 <td>)</td>
6473 <td></td><td></td>
6474 </tr>
6475 </table>
6476</div><div class="memdoc">
6477
6478<p class="definition">Definition at line <a class="el" href="_batch_norm_impl_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_batch_norm_impl_8cpp_source.xhtml">BatchNormImpl.cpp</a>.</p>
6479
6480<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00623">BatchNormalizationDescriptor::m_Eps</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
6481
6482<p class="reference">Referenced by <a class="el" href="_ref_batch_normalization_workload_8cpp_source.xhtml#l00025">RefBatchNormalizationWorkload::Execute()</a>.</p>
6483<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; meanDecoder[c];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; varianceDecoder[c];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; betaDecoder[c];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; gammaDecoder[c];</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> mean = meanDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> var = varianceDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> beta = betaDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">float</span> gamma = gammaDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">float</span> mult = gamma / sqrtf(var + data.m_Parameters.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">float</span> add = beta - mult * mean;</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; n++)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(mult * inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() + add);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</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; }</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;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
6484<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
6485<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
6486<div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
6487</div><!-- fragment -->
6488</div>
6489</div>
6490<a id="a8746512fab5ec10c2c57800c66311ba7"></a>
6491<h2 class="memtitle"><span class="permalink"><a href="#a8746512fab5ec10c2c57800c66311ba7">&#9670;&nbsp;</a></span>BatchToSpaceNd()</h2>
6492
6493<div class="memitem">
6494<div class="memproto">
6495 <table class="memname">
6496 <tr>
6497 <td class="memname">void BatchToSpaceNd </td>
6498 <td>(</td>
6499 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
6500 <td class="paramname"><em>dataLayout</em>, </td>
6501 </tr>
6502 <tr>
6503 <td class="paramkey"></td>
6504 <td></td>
6505 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
6506 <td class="paramname"><em>inputTensorInfo</em>, </td>
6507 </tr>
6508 <tr>
6509 <td class="paramkey"></td>
6510 <td></td>
6511 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
6512 <td class="paramname"><em>outputTensorInfo</em>, </td>
6513 </tr>
6514 <tr>
6515 <td class="paramkey"></td>
6516 <td></td>
6517 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
6518 <td class="paramname"><em>blockShape</em>, </td>
6519 </tr>
6520 <tr>
6521 <td class="paramkey"></td>
6522 <td></td>
6523 <td class="paramtype">const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;&#160;</td>
6524 <td class="paramname"><em>cropsData</em>, </td>
6525 </tr>
6526 <tr>
6527 <td class="paramkey"></td>
6528 <td></td>
6529 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
6530 <td class="paramname"><em>inputDecoder</em>, </td>
6531 </tr>
6532 <tr>
6533 <td class="paramkey"></td>
6534 <td></td>
6535 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
6536 <td class="paramname"><em>outputEncoder</em>&#160;</td>
6537 </tr>
6538 <tr>
6539 <td></td>
6540 <td>)</td>
6541 <td></td><td></td>
6542 </tr>
6543 </table>
6544</div><div class="memdoc">
6545
6546<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml">BatchToSpaceNd.cpp</a>.</p>
6547
6548<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">BatchToSpaceNd()</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00019">Offset()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
6549
6550<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">BatchToSpaceNd()</a>, <a class="el" href="_batch_to_space_nd_layer_8cpp_source.xhtml#l00026">BatchToSpaceNdLayer::BatchToSpaceNdLayer()</a>, and <a class="el" href="_serializer_tests_8cpp_source.xhtml#l00416">BOOST_AUTO_TEST_CASE()</a>.</p>
6551<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> inputShape = inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; BOOST_ASSERT_MSG(inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() == 4, <span class="stringliteral">&quot;Expected Input with 4 Dimensions&quot;</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> outputShape = outputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; BOOST_ASSERT_MSG(outputShape.GetNumDimensions() == 4, <span class="stringliteral">&quot;Expected Output with 4 Dimensions&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</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; BOOST_ASSERT_MSG(blockShape.size() &gt; 0, <span class="stringliteral">&quot;BlockShape must contain 1 or more entries&quot;</span>);</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeHeight = blockShape[0];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockShapeWidth = blockShape[1];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; BOOST_ASSERT_MSG(cropsData.size() &gt; 0, <span class="stringliteral">&quot;Crops must contain 1 or more entries&quot;</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsTop = cropsData[0].first;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cropsLeft = cropsData[1].first;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatch = 0; inBatch &lt; inputBatchSize; ++inBatch)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outBatch = inBatch % outputBatchSize;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> spatialOffset = inBatch / outputBatchSize;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inH = 0; inH &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()]; ++inH) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = inH * blockShapeHeight + spatialOffset / blockShapeWidth - cropsTop;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (outH &gt;= outputHeight)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">continue</span>;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inW = 0; inW &lt; inputTensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()]; ++inW) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = inW * blockShapeWidth + spatialOffset % blockShapeWidth - cropsLeft;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (outW &gt;= outputWidth)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.xhtml#ac70a495c61526a0500b33b23db86ca27">Offset</a>(outputShape, outBatch, outH, outW, c, dataLayout);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.xhtml#ac70a495c61526a0500b33b23db86ca27">Offset</a>(inputShape, inBatch, inH, inW, c, dataLayout);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputEncoder[outOffset];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inputDecoder[inOffset];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
6552<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#l00088">Tensor.hpp:88</a></div></div>
6553<div class="ttc" id="namespacearmnn_xhtml_ac70a495c61526a0500b33b23db86ca27"><div class="ttname"><a href="namespacearmnn.xhtml#ac70a495c61526a0500b33b23db86ca27">armnn::Offset</a></div><div class="ttdeci">unsigned int Offset(const TensorShape &amp;shape, unsigned int batch, unsigned int height, unsigned int width, unsigned int channels, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00019">BatchToSpaceNd.cpp:19</a></div></div>
6554<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
6555<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>
6556<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
6557<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
6558<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="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00043">Tensor.hpp:43</a></div></div>
6559<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
6560</div><!-- fragment -->
6561</div>
6562</div>
6563<a id="ad3d9cbf26cb5894fd6d9169dbe743417"></a>
6564<h2 class="memtitle"><span class="permalink"><a href="#ad3d9cbf26cb5894fd6d9169dbe743417">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[1/81]</span></h2>
6565
6566<div class="memitem">
6567<div class="memproto">
6568 <table class="memname">
6569 <tr>
6570 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6571 <td>(</td>
6572 <td class="paramtype">CheckInputLayerVisitorBindingIdAndName&#160;</td>
6573 <td class="paramname"></td><td>)</td>
6574 <td></td>
6575 </tr>
6576 </table>
6577</div><div class="memdoc">
6578
6579<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml">TestInputOutputLayerVisitor.cpp</a>.</p>
6580
6581<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l01041">Network::AddInputLayer()</a>.</p>
6582<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;InputLayer&quot;</span>;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; TestInputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1, layerName);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
6583</div>
6584</div>
6585<a id="ac7ce83f024515592cffac13ae5220f1e"></a>
6586<h2 class="memtitle"><span class="permalink"><a href="#ac7ce83f024515592cffac13ae5220f1e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[2/81]</span></h2>
6587
6588<div class="memitem">
6589<div class="memproto">
6590 <table class="memname">
6591 <tr>
6592 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6593 <td>(</td>
6594 <td class="paramtype">CheckInputLayerVisitorBindingIdAndNameNull&#160;</td>
6595 <td class="paramname"></td><td>)</td>
6596 <td></td>
6597 </tr>
6598 </table>
6599</div><div class="memdoc">
6600
6601<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml#l00023">23</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml">TestInputOutputLayerVisitor.cpp</a>.</p>
6602
6603<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l01041">Network::AddInputLayer()</a>.</p>
6604<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; TestInputLayerVisitor visitor(1);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Network net;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddInputLayer(1);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
6605</div>
6606</div>
6607<a id="ac28b0a4861e6eab3e7621a7ed4eb5f62"></a>
6608<h2 class="memtitle"><span class="permalink"><a href="#ac28b0a4861e6eab3e7621a7ed4eb5f62">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[3/81]</span></h2>
6609
6610<div class="memitem">
6611<div class="memproto">
6612 <table class="memname">
6613 <tr>
6614 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6615 <td>(</td>
6616 <td class="paramtype">CheckOutputLayerVisitorBindingIdAndName&#160;</td>
6617 <td class="paramname"></td><td>)</td>
6618 <td></td>
6619 </tr>
6620 </table>
6621</div><div class="memdoc">
6622
6623<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml#l00032">32</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml">TestInputOutputLayerVisitor.cpp</a>.</p>
6624
6625<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l01310">Network::AddOutputLayer()</a>.</p>
6626<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;OutputLayer&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; TestOutputLayerVisitor visitor(1, layerName);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; Network net;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1, layerName);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div></div><!-- fragment -->
6627</div>
6628</div>
6629<a id="a9a7475b081b431ffa9915aac51c2d338"></a>
6630<h2 class="memtitle"><span class="permalink"><a href="#a9a7475b081b431ffa9915aac51c2d338">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[4/81]</span></h2>
6631
6632<div class="memitem">
6633<div class="memproto">
6634 <table class="memname">
6635 <tr>
6636 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6637 <td>(</td>
6638 <td class="paramtype">CheckOutputLayerVisitorBindingIdAndNameNull&#160;</td>
6639 <td class="paramname"></td><td>)</td>
6640 <td></td>
6641 </tr>
6642 </table>
6643</div><div class="memdoc">
6644
6645<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml#l00042">42</a> of file <a class="el" href="_test_input_output_layer_visitor_8cpp_source.xhtml">TestInputOutputLayerVisitor.cpp</a>.</p>
6646
6647<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01310">Network::AddOutputLayer()</a>, and <a class="el" href="_profiler_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>.</p>
6648<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; TestOutputLayerVisitor visitor(1);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Network net;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddOutputLayer(1);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div></div><!-- fragment -->
6649</div>
6650</div>
6651<a id="a10d15f3df1ab52b3b915a4be1dbf386b"></a>
6652<h2 class="memtitle"><span class="permalink"><a href="#a10d15f3df1ab52b3b915a4be1dbf386b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[5/81]</span></h2>
6653
6654<div class="memitem">
6655<div class="memproto">
6656 <table class="memname">
6657 <tr>
6658 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6659 <td>(</td>
6660 <td class="paramtype">CheckConvolution2dLayer&#160;</td>
6661 <td class="paramname"></td><td>)</td>
6662 <td></td>
6663 </tr>
6664 </table>
6665</div><div class="memdoc">
6666
6667<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00170">170</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6668
6669<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01139">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6670
6671<p class="reference">Referenced by <a class="el" href="_permute_and_batch_to_space_as_depth_to_space_tests_8cpp_source.xhtml#l00117">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_neon_end_to_end_tests_8cpp_source.xhtml#l00545">QuantizeData()</a>.</p>
6672<div class="fragment"><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; Network net;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;}</div></div><!-- fragment -->
6673</div>
6674</div>
6675<a id="a62448ee306fc41cc7980c4b7eac3ebb6"></a>
6676<h2 class="memtitle"><span class="permalink"><a href="#a62448ee306fc41cc7980c4b7eac3ebb6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[6/81]</span></h2>
6677
6678<div class="memitem">
6679<div class="memproto">
6680 <table class="memname">
6681 <tr>
6682 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6683 <td>(</td>
6684 <td class="paramtype">CheckNamedConvolution2dLayer&#160;</td>
6685 <td class="paramname"></td><td>)</td>
6686 <td></td>
6687 </tr>
6688 </table>
6689</div><div class="memdoc">
6690
6691<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00193">193</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6692
6693<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01139">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6694<div class="fragment"><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="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div></div><!-- fragment -->
6695</div>
6696</div>
6697<a id="a66e9fcc01969d6afa35dfaa212ded223"></a>
6698<h2 class="memtitle"><span class="permalink"><a href="#a66e9fcc01969d6afa35dfaa212ded223">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[7/81]</span></h2>
6699
6700<div class="memitem">
6701<div class="memproto">
6702 <table class="memname">
6703 <tr>
6704 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6705 <td>(</td>
6706 <td class="paramtype">CheckConvolution2dLayerWithBiases&#160;</td>
6707 <td class="paramname"></td><td>)</td>
6708 <td></td>
6709 </tr>
6710 </table>
6711</div><div class="memdoc">
6712
6713<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00217">217</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6714
6715<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01139">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6716<div class="fragment"><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; Network net;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div></div><!-- fragment -->
6717</div>
6718</div>
6719<a id="a8baf97065d802063eb9bcdd1a066dc86"></a>
6720<h2 class="memtitle"><span class="permalink"><a href="#a8baf97065d802063eb9bcdd1a066dc86">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[8/81]</span></h2>
6721
6722<div class="memitem">
6723<div class="memproto">
6724 <table class="memname">
6725 <tr>
6726 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6727 <td>(</td>
6728 <td class="paramtype">QuantizeAddition&#160;</td>
6729 <td class="paramname"></td><td>)</td>
6730 <td></td>
6731 </tr>
6732 </table>
6733</div><div class="memdoc">
6734
6735<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">225</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
6736
6737<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
6738<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</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; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; TestAdditionQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; TestAdditionQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; TestAdditionQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; TestAdditionQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
6739<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6740<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
6741</div><!-- fragment -->
6742</div>
6743</div>
6744<a id="a154c5a01df05412929d89e06fc4d0d6d"></a>
6745<h2 class="memtitle"><span class="permalink"><a href="#a154c5a01df05412929d89e06fc4d0d6d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[9/81]</span></h2>
6746
6747<div class="memitem">
6748<div class="memproto">
6749 <table class="memname">
6750 <tr>
6751 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6752 <td>(</td>
6753 <td class="paramtype">CheckNamedConvolution2dLayerWithBiases&#160;</td>
6754 <td class="paramname"></td><td>)</td>
6755 <td></td>
6756 </tr>
6757 </table>
6758</div><div class="memdoc">
6759
6760<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00246">246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6761
6762<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01139">Network::AddConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00440">Convolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00428">Convolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00422">Convolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00424">Convolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00426">Convolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00430">Convolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00432">Convolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6763<div class="fragment"><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;Convolution2dLayer&quot;</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; TestConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; Network net;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;}</div></div><!-- fragment -->
6764</div>
6765</div>
6766<a id="a6eadb1671955b1bf7cdd8b29fd34aa33"></a>
6767<h2 class="memtitle"><span class="permalink"><a href="#a6eadb1671955b1bf7cdd8b29fd34aa33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[10/81]</span></h2>
6768
6769<div class="memitem">
6770<div class="memproto">
6771 <table class="memname">
6772 <tr>
6773 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6774 <td>(</td>
6775 <td class="paramtype">CheckDepthwiseConvolution2dLayer&#160;</td>
6776 <td class="paramname"></td><td>)</td>
6777 <td></td>
6778 </tr>
6779 </table>
6780</div><div class="memdoc">
6781
6782<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00276">276</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6783
6784<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01193">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6785<div class="fragment"><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div></div><!-- fragment -->
6786</div>
6787</div>
6788<a id="ac36bd2336c0e3caefecde40bc07e2bf3"></a>
6789<h2 class="memtitle"><span class="permalink"><a href="#ac36bd2336c0e3caefecde40bc07e2bf3">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[11/81]</span></h2>
6790
6791<div class="memitem">
6792<div class="memproto">
6793 <table class="memname">
6794 <tr>
6795 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6796 <td>(</td>
6797 <td class="paramtype">CheckNamedDepthwiseConvolution2dLayer&#160;</td>
6798 <td class="paramname"></td><td>)</td>
6799 <td></td>
6800 </tr>
6801 </table>
6802</div><div class="memdoc">
6803
6804<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00299">299</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6805
6806<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01193">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6807<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; Network net;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor,</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; weights,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; EmptyOptional(),</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; layerName);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;}</div></div><!-- fragment -->
6808</div>
6809</div>
6810<a id="a14bcc6125921389dceb27e432bc7a489"></a>
6811<h2 class="memtitle"><span class="permalink"><a href="#a14bcc6125921389dceb27e432bc7a489">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[12/81]</span></h2>
6812
6813<div class="memitem">
6814<div class="memproto">
6815 <table class="memname">
6816 <tr>
6817 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6818 <td>(</td>
6819 <td class="paramtype">CheckDepthwiseConvolution2dLayerWithBiases&#160;</td>
6820 <td class="paramname"></td><td>)</td>
6821 <td></td>
6822 </tr>
6823 </table>
6824</div><div class="memdoc">
6825
6826<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00326">326</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6827
6828<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01193">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6829<div class="fragment"><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</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; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases);</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; Network net;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div></div><!-- fragment -->
6830</div>
6831</div>
6832<a id="a9cec088786b209989fe9e04e1be9636d"></a>
6833<h2 class="memtitle"><span class="permalink"><a href="#a9cec088786b209989fe9e04e1be9636d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[13/81]</span></h2>
6834
6835<div class="memitem">
6836<div class="memproto">
6837 <table class="memname">
6838 <tr>
6839 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6840 <td>(</td>
6841 <td class="paramtype">InputOutputLayerDynamicQuant&#160;</td>
6842 <td class="paramname"></td><td>)</td>
6843 <td></td>
6844 </tr>
6845 </table>
6846</div><div class="memdoc">
6847
6848<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00345">345</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
6849
6850<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00316">CreateNetworkWithInputOutputLayers()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00335">GetInputTensorInfo()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
6851<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#aa9c6c1a7b5380a99a536f4740f87dd59">CreateNetworkWithInputOutputLayers</a>();</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; <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.xhtml#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="comment">// Outliers -56 and 98</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; std::vector&lt;float&gt; inputData({0, 0, 0, -56, 98, 0, 0, 0});</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.xhtml#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; quantizer-&gt;Refine(inputTensors);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="comment">// Outliers -77 and 65</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; std::vector&lt;float&gt; inputData2({0, -77, 0, -56, 65, 0, 0, 0});</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> inputTensor2(tensorInfo, inputData2.data());</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors2;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; inputTensors2.push_back(std::make_pair(0, inputTensor2));</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; quantizer-&gt;Refine(inputTensors2);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="comment">// Output Layer should be quantized for a min max of -77 and 98</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="comment">// according to QU8 Quantization Scheme</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; std::unique_ptr&lt;IQuantizationScheme&gt; quantizationScheme = std::make_unique&lt;QAsymmU8QuantizationScheme&gt;();</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme-&gt;ComputeScheme(-77.0, 98.0);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">class </span>TestOutputLayerVisitor : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; TestOutputLayerVisitor(<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a>&amp; offsetScalePair, <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&amp; dataType) :</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; m_OffsetScalePair(offsetScalePair), m_DataType(dataType) {}</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; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; BOOST_CHECK_MESSAGE(info.GetDataType() == m_DataType,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; std::string(<a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.GetDataType()))</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; .append(<span class="stringliteral">&quot; == &quot;</span>).append(<a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(m_DataType)));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="comment">// int_32t</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(info.GetQuantizationOffset() == m_OffsetScalePair.second);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="comment">// float</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; BOOST_TEST(info.GetQuantizationScale() == m_OffsetScalePair.first, boost::test_tools::tolerance(0.001));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }</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; <span class="keyword">private</span>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> m_OffsetScalePair;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> m_DataType;</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;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; TestOutputLayerVisitor visitor(qParams, quantizationScheme-&gt;GetDataType());</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; quantizedNetwork-&gt;Accept(visitor);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
6852<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#l00053">Tensor.hpp:53</a></div></div>
6853<div class="ttc" id="namespacearmnn_xhtml_aa9c6c1a7b5380a99a536f4740f87dd59"><div class="ttname"><a href="namespacearmnn.xhtml#aa9c6c1a7b5380a99a536f4740f87dd59">armnn::CreateNetworkWithInputOutputLayers</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithInputOutputLayers()</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00316">QuantizerTest.cpp:316</a></div></div>
6854<div class="ttc" id="namespacearmnn_xhtml_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.xhtml#l00029">INetworkQuantizer.hpp:29</a></div></div>
6855<div class="ttc" id="namespacearmnn_xhtml_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00225">Tensor.hpp:225</a></div></div>
6856<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>
6857<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
6858<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00171">Types.hpp:171</a></div></div>
6859<div class="ttc" id="namespacearmnn_xhtml_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00168">TypesUtils.hpp:168</a></div></div>
6860<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
6861<div class="ttc" id="classarmnn_1_1_const_tensor_xhtml"><div class="ttname"><a href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00199">Tensor.hpp:199</a></div></div>
6862<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
6863<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
6864<div class="ttc" id="namespacearmnn_xhtml_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.xhtml#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00335">QuantizerTest.cpp:335</a></div></div>
6865<div class="ttc" id="classarmnn_1_1_i_network_quantizer_xhtml_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.xhtml#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.xhtml#l00040">NetworkQuantizer.cpp:40</a></div></div>
6866</div><!-- fragment -->
6867</div>
6868</div>
6869<a id="aaeafd5f3786a0bd215468714c1e743b1"></a>
6870<h2 class="memtitle"><span class="permalink"><a href="#aaeafd5f3786a0bd215468714c1e743b1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[14/81]</span></h2>
6871
6872<div class="memitem">
6873<div class="memproto">
6874 <table class="memname">
6875 <tr>
6876 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6877 <td>(</td>
6878 <td class="paramtype">CheckNamedDepthwiseConvolution2dLayerWithBiases&#160;</td>
6879 <td class="paramname"></td><td>)</td>
6880 <td></td>
6881 </tr>
6882 </table>
6883</div><div class="memdoc">
6884
6885<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00355">355</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6886
6887<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01193">Network::AddDepthwiseConvolution2dLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00492">DepthwiseConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00480">DepthwiseConvolution2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00474">DepthwiseConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00476">DepthwiseConvolution2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00478">DepthwiseConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00482">DepthwiseConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00484">DepthwiseConvolution2dDescriptor::m_StrideY</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
6888<div class="fragment"><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;{</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;DepthwiseConvolution2dLayer&quot;</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; descriptor.m_PadLeft = 2;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; descriptor.m_PadRight = 3;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; descriptor.m_PadBottom = 1;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; descriptor.m_PadTop = 5;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; descriptor.m_StrideX = 2;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; descriptor.m_StrideY = 3;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</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; TestDepthwiseConvolution2dLayerVisitor visitor(descriptor, weights, optionalBiases, layerName);</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; Network net;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div></div><!-- fragment -->
6889</div>
6890</div>
6891<a id="a3425db69ef4e4927a82e99025c16294a"></a>
6892<h2 class="memtitle"><span class="permalink"><a href="#a3425db69ef4e4927a82e99025c16294a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[15/81]</span></h2>
6893
6894<div class="memitem">
6895<div class="memproto">
6896 <table class="memname">
6897 <tr>
6898 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6899 <td>(</td>
6900 <td class="paramtype">CheckFullyConnectedLayer&#160;</td>
6901 <td class="paramname"></td><td>)</td>
6902 <td></td>
6903 </tr>
6904 </table>
6905</div><div class="memdoc">
6906
6907<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00385">385</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6908
6909<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01086">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6910<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional());</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div></div><!-- fragment -->
6911</div>
6912</div>
6913<a id="a631f8c0c9bceff4bef761eb7fd865686"></a>
6914<h2 class="memtitle"><span class="permalink"><a href="#a631f8c0c9bceff4bef761eb7fd865686">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[16/81]</span></h2>
6915
6916<div class="memitem">
6917<div class="memproto">
6918 <table class="memname">
6919 <tr>
6920 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6921 <td>(</td>
6922 <td class="paramtype">CheckNamedFullyConnectedLayer&#160;</td>
6923 <td class="paramname"></td><td>)</td>
6924 <td></td>
6925 </tr>
6926 </table>
6927</div><div class="memdoc">
6928
6929<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00402">402</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6930
6931<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01086">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6932<div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;{</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; TestFullyConnectedLayerVistor visitor(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, EmptyOptional(), layerName);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;}</div></div><!-- fragment -->
6933</div>
6934</div>
6935<a id="a7db6a78bb6eedbea7f0525f1fe59de28"></a>
6936<h2 class="memtitle"><span class="permalink"><a href="#a7db6a78bb6eedbea7f0525f1fe59de28">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[17/81]</span></h2>
6937
6938<div class="memitem">
6939<div class="memproto">
6940 <table class="memname">
6941 <tr>
6942 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6943 <td>(</td>
6944 <td class="paramtype">QuantizeAbsActivation&#160;</td>
6945 <td class="paramname"></td><td>)</td>
6946 <td></td>
6947 </tr>
6948 </table>
6949</div><div class="memdoc">
6950
6951<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00406">406</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
6952
6953<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
6954<div class="fragment"><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; descriptor.m_Function = ActivationFunction::Abs;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <span class="keyword">const</span> QuantizerOptions qAsymmU8Options(DataType::QAsymmU8);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), qAsymmU8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
6955<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
6956<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
6957</div><!-- fragment -->
6958</div>
6959</div>
6960<a id="a7b017a692367333d1035e276f252f46c"></a>
6961<h2 class="memtitle"><span class="permalink"><a href="#a7b017a692367333d1035e276f252f46c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[18/81]</span></h2>
6962
6963<div class="memitem">
6964<div class="memproto">
6965 <table class="memname">
6966 <tr>
6967 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6968 <td>(</td>
6969 <td class="paramtype">CheckFullyConnectedLayerWithBiases&#160;</td>
6970 <td class="paramname"></td><td>)</td>
6971 <td></td>
6972 </tr>
6973 </table>
6974</div><div class="memdoc">
6975
6976<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00420">420</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
6977
6978<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01086">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
6979<div class="fragment"><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</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; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;}</div></div><!-- fragment -->
6980</div>
6981</div>
6982<a id="a2df3b432de50a9b9e8b486aa53e11cc5"></a>
6983<h2 class="memtitle"><span class="permalink"><a href="#a2df3b432de50a9b9e8b486aa53e11cc5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[19/81]</span></h2>
6984
6985<div class="memitem">
6986<div class="memproto">
6987 <table class="memname">
6988 <tr>
6989 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
6990 <td>(</td>
6991 <td class="paramtype">QuantizeLinearActivation&#160;</td>
6992 <td class="paramname"></td><td>)</td>
6993 <td></td>
6994 </tr>
6995 </table>
6996</div><div class="memdoc">
6997
6998<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00437">437</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
6999
7000<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7001<div class="fragment"><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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; descriptor.m_Function = ActivationFunction::Linear;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7002<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7003<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7004</div><!-- fragment -->
7005</div>
7006</div>
7007<a id="a5f3e4faca1d063ad73764571f898dc2d"></a>
7008<h2 class="memtitle"><span class="permalink"><a href="#a5f3e4faca1d063ad73764571f898dc2d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[20/81]</span></h2>
7009
7010<div class="memitem">
7011<div class="memproto">
7012 <table class="memname">
7013 <tr>
7014 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7015 <td>(</td>
7016 <td class="paramtype">CheckNamedFullyConnectedLayerWithBiases&#160;</td>
7017 <td class="paramname"></td><td>)</td>
7018 <td></td>
7019 </tr>
7020 </table>
7021</div><div class="memdoc">
7022
7023<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00443">443</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7024
7025<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01086">Network::AddFullyConnectedLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
7026<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;FullyConnectedLayer&quot;</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; FullyConnectedDescriptor descriptor;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; descriptor.m_TransposeWeightMatrix = <span class="keyword">true</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; descriptor.m_BiasEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; ConstTensor weights(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; std::vector&lt;float&gt; biasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; std::vector&lt;unsigned int&gt; biasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; ConstTensor biases(TensorInfo(4, biasDimensions.data(), DataType::Float32), biasData);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases(biases);</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; TestFullyConnectedLayerVistor visitor(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; Network net;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddFullyConnectedLayer(descriptor, weights, optionalBiases, layerName);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div></div><!-- fragment -->
7027</div>
7028</div>
7029<a id="a3dd219b394b8186d1849ee595193268d"></a>
7030<h2 class="memtitle"><span class="permalink"><a href="#a3dd219b394b8186d1849ee595193268d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[21/81]</span></h2>
7031
7032<div class="memitem">
7033<div class="memproto">
7034 <table class="memname">
7035 <tr>
7036 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7037 <td>(</td>
7038 <td class="paramtype">QuantizeReLuActivation&#160;</td>
7039 <td class="paramname"></td><td>)</td>
7040 <td></td>
7041 </tr>
7042 </table>
7043</div><div class="memdoc">
7044
7045<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00467">467</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7046
7047<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7048<div class="fragment"><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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; descriptor.m_Function = ActivationFunction::ReLu;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7049<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7050<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7051</div><!-- fragment -->
7052</div>
7053</div>
7054<a id="a199581e11ebd49e1322b090484f3dd29"></a>
7055<h2 class="memtitle"><span class="permalink"><a href="#a199581e11ebd49e1322b090484f3dd29">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[22/81]</span></h2>
7056
7057<div class="memitem">
7058<div class="memproto">
7059 <table class="memname">
7060 <tr>
7061 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7062 <td>(</td>
7063 <td class="paramtype">CheckBatchNormalizationLayer&#160;</td>
7064 <td class="paramname"></td><td>)</td>
7065 <td></td>
7066 </tr>
7067 </table>
7068</div><div class="memdoc">
7069
7070<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00467">467</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7071
7072<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01315">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
7073<div class="fragment"><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; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</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; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</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; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</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; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(descriptor, mean, variance, beta, gamma);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;}</div></div><!-- fragment -->
7074</div>
7075</div>
7076<a id="a52e948b4bffc16a3933d812dbc384833"></a>
7077<h2 class="memtitle"><span class="permalink"><a href="#a52e948b4bffc16a3933d812dbc384833">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[23/81]</span></h2>
7078
7079<div class="memitem">
7080<div class="memproto">
7081 <table class="memname">
7082 <tr>
7083 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7084 <td>(</td>
7085 <td class="paramtype">QuantizeSoftReLuActivation&#160;</td>
7086 <td class="paramname"></td><td>)</td>
7087 <td></td>
7088 </tr>
7089 </table>
7090</div><div class="memdoc">
7091
7092<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00497">497</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7093
7094<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7095<div class="fragment"><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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; descriptor.m_Function = ActivationFunction::SoftReLu;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; TestActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; TestActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; TestActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; TestActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7096<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7097<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7098</div><!-- fragment -->
7099</div>
7100</div>
7101<a id="af1eda3afe49e91bf04d6e34a0e3be8ef"></a>
7102<h2 class="memtitle"><span class="permalink"><a href="#af1eda3afe49e91bf04d6e34a0e3be8ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[24/81]</span></h2>
7103
7104<div class="memitem">
7105<div class="memproto">
7106 <table class="memname">
7107 <tr>
7108 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7109 <td>(</td>
7110 <td class="paramtype">CheckNamedBatchNormalizationLayer&#160;</td>
7111 <td class="paramname"></td><td>)</td>
7112 <td></td>
7113 </tr>
7114 </table>
7115</div><div class="memdoc">
7116
7117<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00497">497</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7118
7119<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01315">Network::AddBatchNormalizationLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00625">BatchNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00623">BatchNormalizationDescriptor::m_Eps</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
7120<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;BatchNormalizationLayer&quot;</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; BatchNormalizationDescriptor descriptor;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; descriptor.m_Eps = 0.0002f;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; descriptor.m_DataLayout = DataLayout::NHWC;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ConstTensor mean(TensorInfo(4, dimensions.data(), DataType::Float32), data);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; std::vector&lt;float&gt; varianceData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; std::vector&lt;unsigned int&gt; varianceDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; ConstTensor variance(TensorInfo(4, varianceDimensions.data(), DataType::Float32), varianceData);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; std::vector&lt;float&gt; betaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; std::vector&lt;unsigned int&gt; betaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; ConstTensor beta(TensorInfo(4, betaDimensions.data(), DataType::Float32), betaData);</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; std::vector&lt;float&gt; gammaData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; std::vector&lt;unsigned int&gt; gammaDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; ConstTensor gamma(TensorInfo(4, gammaDimensions.data(), DataType::Float32), gammaData);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; TestBatchNormalizationLayerVisitor visitor(descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; Network net;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddBatchNormalizationLayer(</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; descriptor, mean, variance, beta, gamma, layerName);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;}</div></div><!-- fragment -->
7121</div>
7122</div>
7123<a id="abf109580225cb949565c8223bceadd5d"></a>
7124<h2 class="memtitle"><span class="permalink"><a href="#abf109580225cb949565c8223bceadd5d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[25/81]</span></h2>
7125
7126<div class="memitem">
7127<div class="memproto">
7128 <table class="memname">
7129 <tr>
7130 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7131 <td>(</td>
7132 <td class="paramtype">QuantizeBoundedReluActivation&#160;</td>
7133 <td class="paramname"></td><td>)</td>
7134 <td></td>
7135 </tr>
7136 </table>
7137</div><div class="memdoc">
7138
7139<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00527">527</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7140
7141<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7142<div class="fragment"><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;{</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">class </span>TestBoundedReluActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; TestBoundedReluActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestBoundedReluActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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">// Based off default static range [0.0f, 3.5f]</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; TestQuantizationParams(info, {3.5f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; {3.5f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {3.5f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; {3.5f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; descriptor.m_Function = ActivationFunction::BoundedReLu;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; TestBoundedReluActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; TestBoundedReluActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7143<div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7144<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7145<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>
7146<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7147<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7148<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7149<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7150<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7151<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7152</div><!-- fragment -->
7153</div>
7154</div>
7155<a id="a1a8221833cf3d29cd6435aed632dfcce"></a>
7156<h2 class="memtitle"><span class="permalink"><a href="#a1a8221833cf3d29cd6435aed632dfcce">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[26/81]</span></h2>
7157
7158<div class="memitem">
7159<div class="memproto">
7160 <table class="memname">
7161 <tr>
7162 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7163 <td>(</td>
7164 <td class="paramtype">CheckConstLayer&#160;</td>
7165 <td class="paramname"></td><td>)</td>
7166 <td></td>
7167 </tr>
7168 </table>
7169</div><div class="memdoc">
7170
7171<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00529">529</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7172
7173<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01368">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
7174<div class="fragment"><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;{</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestConstantLayerVisitor visitor(input);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; Network net;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;}</div></div><!-- fragment -->
7175</div>
7176</div>
7177<a id="a9da3b50de4d108b81264a22c5adacf05"></a>
7178<h2 class="memtitle"><span class="permalink"><a href="#a9da3b50de4d108b81264a22c5adacf05">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[27/81]</span></h2>
7179
7180<div class="memitem">
7181<div class="memproto">
7182 <table class="memname">
7183 <tr>
7184 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7185 <td>(</td>
7186 <td class="paramtype">CheckNamedConstLayer&#160;</td>
7187 <td class="paramname"></td><td>)</td>
7188 <td></td>
7189 </tr>
7190 </table>
7191</div><div class="memdoc">
7192
7193<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00543">543</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7194
7195<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01368">Network::AddConstantLayer()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
7196<div class="fragment"><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;{</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;ConstantLayer&quot;</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; std::vector&lt;float&gt; data = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; std::vector&lt;unsigned int&gt; dimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; ConstTensor input(TensorInfo(4, dimensions.data(), DataType::Float32), data);</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; TestConstantLayerVisitor visitor(input, layerName);</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; Network net;</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; IConnectableLayer* <span class="keyword">const</span> layer = net.AddConstantLayer(input, layerName);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;}</div></div><!-- fragment -->
7197</div>
7198</div>
7199<a id="afefeb492b3446d34e413556a805210b6"></a>
7200<h2 class="memtitle"><span class="permalink"><a href="#afefeb492b3446d34e413556a805210b6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[28/81]</span></h2>
7201
7202<div class="memitem">
7203<div class="memproto">
7204 <table class="memname">
7205 <tr>
7206 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7207 <td>(</td>
7208 <td class="paramtype">CheckLstmLayerBasic&#160;</td>
7209 <td class="paramname"></td><td>)</td>
7210 <td></td>
7211 </tr>
7212 </table>
7213</div><div class="memdoc">
7214
7215<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00558">558</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7216
7217<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7218<div class="fragment"><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</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; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</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; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</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; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; Network net;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;}</div></div><!-- fragment -->
7219</div>
7220</div>
7221<a id="acbf871a6ec0726bfe2746e761a278108"></a>
7222<h2 class="memtitle"><span class="permalink"><a href="#acbf871a6ec0726bfe2746e761a278108">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[29/81]</span></h2>
7223
7224<div class="memitem">
7225<div class="memproto">
7226 <table class="memname">
7227 <tr>
7228 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7229 <td>(</td>
7230 <td class="paramtype">QuantizeTanHActivation&#160;</td>
7231 <td class="paramname"></td><td>)</td>
7232 <td></td>
7233 </tr>
7234 </table>
7235</div><div class="memdoc">
7236
7237<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00583">583</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7238
7239<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7240<div class="fragment"><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;{</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">class </span>TestTanHActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; TestTanHActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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">// Based off default static range [-1.0f, 1.0f]</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; info, {2.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; {2.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; {1.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a> , 0},</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; {1.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; };</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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; descriptor.m_Function = ActivationFunction::TanH;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; descriptor.m_B = -10.0f;</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="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; TestTanHActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; TestTanHActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; TestTanHActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; TestTanHActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7241<div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7242<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7243<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>
7244<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7245<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7246<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7247<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7248<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7249<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7250</div><!-- fragment -->
7251</div>
7252</div>
7253<a id="a8f6ad27911e2e711f665ae69c5b2cd1d"></a>
7254<h2 class="memtitle"><span class="permalink"><a href="#a8f6ad27911e2e711f665ae69c5b2cd1d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[30/81]</span></h2>
7255
7256<div class="memitem">
7257<div class="memproto">
7258 <table class="memname">
7259 <tr>
7260 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7261 <td>(</td>
7262 <td class="paramtype">CheckNamedLstmLayerBasic&#160;</td>
7263 <td class="paramname"></td><td>)</td>
7264 <td></td>
7265 </tr>
7266 </table>
7267</div><div class="memdoc">
7268
7269<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00630">630</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7270
7271<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7272<div class="fragment"><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;{</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</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; Network net;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;}</div></div><!-- fragment -->
7273</div>
7274</div>
7275<a id="a32068047cc7b37f1bed1830508891526"></a>
7276<h2 class="memtitle"><span class="permalink"><a href="#a32068047cc7b37f1bed1830508891526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[31/81]</span></h2>
7277
7278<div class="memitem">
7279<div class="memproto">
7280 <table class="memname">
7281 <tr>
7282 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7283 <td>(</td>
7284 <td class="paramtype">QuantizeLeakyReLuActivation&#160;</td>
7285 <td class="paramname"></td><td>)</td>
7286 <td></td>
7287 </tr>
7288 </table>
7289</div><div class="memdoc">
7290
7291<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00678">678</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7292
7293<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7294<div class="fragment"><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; ActivationDescriptor descriptor;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; descriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; descriptor.m_A = 3.5f;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; descriptor.m_B = -10.0f;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; TestLeakyReLuActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; TestLeakyReLuActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7295<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7296<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7297</div><!-- fragment -->
7298</div>
7299</div>
7300<a id="a5400bc09082eab59bdfdbd61a06578f5"></a>
7301<h2 class="memtitle"><span class="permalink"><a href="#a5400bc09082eab59bdfdbd61a06578f5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[32/81]</span></h2>
7302
7303<div class="memitem">
7304<div class="memproto">
7305 <table class="memname">
7306 <tr>
7307 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7308 <td>(</td>
7309 <td class="paramtype">CheckLstmLayerCifgDisabled&#160;</td>
7310 <td class="paramname"></td><td>)</td>
7311 <td></td>
7312 </tr>
7313 </table>
7314</div><div class="memdoc">
7315
7316<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00703">703</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7317
7318<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7319<div class="fragment"><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; LstmDescriptor descriptor;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</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; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</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; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</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; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</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; Network net;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;}</div></div><!-- fragment -->
7320</div>
7321</div>
7322<a id="a6c08ed3db08fcfca0592c62cd6080b76"></a>
7323<h2 class="memtitle"><span class="permalink"><a href="#a6c08ed3db08fcfca0592c62cd6080b76">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[33/81]</span></h2>
7324
7325<div class="memitem">
7326<div class="memproto">
7327 <table class="memname">
7328 <tr>
7329 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7330 <td>(</td>
7331 <td class="paramtype">QuantizeELuActivation&#160;</td>
7332 <td class="paramname"></td><td>)</td>
7333 <td></td>
7334 </tr>
7335 </table>
7336</div><div class="memdoc">
7337
7338<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00709">709</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7339
7340<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7341<div class="fragment"><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;{</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keyword">class </span>TestEluActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; TestEluActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; TestEluActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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="comment">// Based off default static range [-15.0f, 15.0f]</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; info, {30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; };</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; descriptor.m_Function = ActivationFunction::Elu;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; TestEluActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; TestEluActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; TestEluActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; TestEluActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7342<div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7343<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7344<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>
7345<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7346<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7347<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7348<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7349<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7350<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7351</div><!-- fragment -->
7352</div>
7353</div>
7354<a id="ab182b6a1d2348a86472001c92586717a"></a>
7355<h2 class="memtitle"><span class="permalink"><a href="#ab182b6a1d2348a86472001c92586717a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[34/81]</span></h2>
7356
7357<div class="memitem">
7358<div class="memproto">
7359 <table class="memname">
7360 <tr>
7361 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7362 <td>(</td>
7363 <td class="paramtype">QuantizeHardSwishActivation&#160;</td>
7364 <td class="paramname"></td><td>)</td>
7365 <td></td>
7366 </tr>
7367 </table>
7368</div><div class="memdoc">
7369
7370<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00763">763</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7371
7372<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">CreateNetworkWithActivationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7373<div class="fragment"><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;{</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keyword">class </span>TestHardSwishActivationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; TestHardSwishActivationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; TestHardSwishActivationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordtype">void</span> VisitActivationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keyword">const</span> ActivationDescriptor&amp; descriptor,</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="comment">// Based off default static range [-15.0f, 15.0f]</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; info, {30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; {30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</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;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; ActivationDescriptor descriptor;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; descriptor.m_Function = ActivationFunction::HardSwish;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">CreateNetworkWithActivationLayer</a>(descriptor, shape);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; TestHardSwishActivationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; TestHardSwishActivationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; TestHardSwishActivationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; TestHardSwishActivationQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7374<div class="ttc" id="namespacearmnn_xhtml_a5fbc1479db5f4ff70a750cf02d58971b"><div class="ttname"><a href="namespacearmnn.xhtml#a5fbc1479db5f4ff70a750cf02d58971b">armnn::CreateNetworkWithActivationLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithActivationLayer(const ActivationDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00295">QuantizerTest.cpp:295</a></div></div>
7375<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7376<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>
7377<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7378<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7379<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7380<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7381<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7382<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7383</div><!-- fragment -->
7384</div>
7385</div>
7386<a id="ad956f3db79c93a658cbccb41714e1542"></a>
7387<h2 class="memtitle"><span class="permalink"><a href="#ad956f3db79c93a658cbccb41714e1542">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[35/81]</span></h2>
7388
7389<div class="memitem">
7390<div class="memproto">
7391 <table class="memname">
7392 <tr>
7393 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7394 <td>(</td>
7395 <td class="paramtype">CheckNamedLstmLayerCifgDisabled&#160;</td>
7396 <td class="paramname"></td><td>)</td>
7397 <td></td>
7398 </tr>
7399 </table>
7400</div><div class="memdoc">
7401
7402<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00800">800</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7403
7404<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00048">LstmInputParams::m_CellToInputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00051">LstmInputParams::m_InputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00040">LstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00044">LstmInputParams::m_RecurrentToInputWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7405<div class="fragment"><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;{</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">false</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</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; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</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; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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; std::vector&lt;float&gt; inputToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::Float32), inputToInputWeightsData);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; std::vector&lt;float&gt; recurrentToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::Float32), recurrentToInputWeightsData);</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; std::vector&lt;float&gt; cellToInputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; std::vector&lt;unsigned int&gt; cellToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; ConstTensor cellToInputWeights(</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; TensorInfo(4, cellToInputWeightsDimensions.data(), DataType::Float32), cellToInputWeightsData);</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; std::vector&lt;float&gt; inputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Float32), inputGateBiasData);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; params.m_CellToInputWeights = &amp;cellToInputWeights;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</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; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; Network net;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;}</div></div><!-- fragment -->
7406</div>
7407</div>
7408<a id="adf59f87645d301e9b56dd70aed350e54"></a>
7409<h2 class="memtitle"><span class="permalink"><a href="#adf59f87645d301e9b56dd70aed350e54">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[36/81]</span></h2>
7410
7411<div class="memitem">
7412<div class="memproto">
7413 <table class="memname">
7414 <tr>
7415 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7416 <td>(</td>
7417 <td class="paramtype">QuantizeBatchNorm&#160;</td>
7418 <td class="paramname"></td><td>)</td>
7419 <td></td>
7420 </tr>
7421 </table>
7422</div><div class="memdoc">
7423
7424<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00819">819</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7425
7426<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7427<div class="fragment"><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;{</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keyword">class </span>TestBatchNormalizationQuantization : <span class="keyword">public</span> TestQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; TestBatchNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; TestBatchNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitBatchNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keyword">const</span> BatchNormalizationDescriptor&amp; desc,</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keyword">const</span> ConstTensor&amp; mean,</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keyword">const</span> ConstTensor&amp; variance,</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">const</span> ConstTensor&amp; beta,</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keyword">const</span> ConstTensor&amp; gamma,</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="comment">// Based off default static range [-15.0f, 15.0f]</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; info, {30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128},</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; {30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="comment">// Test constants</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; TestConstantQuantizationParams(mean.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; TestConstantQuantizationParams(variance.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; TestConstantQuantizationParams(beta.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; TestConstantQuantizationParams(gamma.GetInfo(), {3.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 85});</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; }</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;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; TensorInfo info(shape, DataType::Float32);</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; std::vector&lt;float&gt; meanData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; std::vector&lt;float&gt; varData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; std::vector&lt;float&gt; betaData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; std::vector&lt;float&gt; gammaData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; ConstTensor mean(info, meanData);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; ConstTensor var(info, varData);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; ConstTensor beta(info, betaData);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; ConstTensor gamma(info, gammaData);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; BatchNormalizationDescriptor desc;</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">// Add the layers</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; IConnectableLayer* batchNorm = network-&gt;AddBatchNormalizationLayer(desc, mean, var, beta, gamma);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; input0-&gt;GetOutputSlot(0).Connect(batchNorm-&gt;GetInputSlot(0));</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; batchNorm-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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">// Set TensorInfo</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; batchNorm-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; TestBatchNormalizationQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; TestBatchNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; TestBatchNormalizationQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keyword">const</span> QuantizerOptions QQsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), QQsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; TestBatchNormalizationQuantization validatorQSymmS16(QQsymm16Options, shape, shape);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7428<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7429<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>
7430<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7431<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7432<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7433<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7434<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7435<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7436</div><!-- fragment -->
7437</div>
7438</div>
7439<a id="aa524f33d3d2b294847c3929237947b20"></a>
7440<h2 class="memtitle"><span class="permalink"><a href="#aa524f33d3d2b294847c3929237947b20">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[37/81]</span></h2>
7441
7442<div class="memitem">
7443<div class="memproto">
7444 <table class="memname">
7445 <tr>
7446 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7447 <td>(</td>
7448 <td class="paramtype">CheckLstmLayerPeephole&#160;</td>
7449 <td class="paramname"></td><td>)</td>
7450 <td></td>
7451 </tr>
7452 </table>
7453</div><div class="memdoc">
7454
7455<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00899">899</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7456
7457<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7458<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;{</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</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; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</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; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</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; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</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; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; LstmInputParams params;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;}</div></div><!-- fragment -->
7459</div>
7460</div>
7461<a id="ae91bc23bf56bb5f9c2e0ddb1fc7be75e"></a>
7462<h2 class="memtitle"><span class="permalink"><a href="#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[38/81]</span></h2>
7463
7464<div class="memitem">
7465<div class="memproto">
7466 <table class="memname">
7467 <tr>
7468 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7469 <td>(</td>
7470 <td class="paramtype">QuantizeDepthToSpace&#160;</td>
7471 <td class="paramname"></td><td>)</td>
7472 <td></td>
7473 </tr>
7474 </table>
7475</div><div class="memdoc">
7476
7477<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00908">908</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7478
7479<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7480<div class="fragment"><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160;{</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="keyword">class </span>TestDepthToSpaceQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; TestDepthToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestDepthToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitDepthToSpaceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a>&amp; desc,</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; }</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; };</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="keyword">const</span> TensorShape inputShape { 1, 2, 2, 4 };</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 4, 4, 1 };</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="keyword">const</span> TensorInfo inputInfo (inputShape, DataType::Float32);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> descriptor(2, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a>);</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; IConnectableLayer* depthToSpaceLayer = network-&gt;AddDepthToSpaceLayer(descriptor);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(depthToSpaceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; depthToSpaceLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; TestDepthToSpaceQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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">// test QAsymmS8 quantization</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; TestDepthToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; TestDepthToSpaceQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; TestDepthToSpaceQuantization validatorQSymmS16(Qsymm16Options, inputShape, outputShape);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7481<div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7482<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7483<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>
7484<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7485<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7486<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7487<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7488<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7489<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7490<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
7491<div class="ttc" id="namespacearmnn_xhtml_a3647f60510bc8ddaced01c51b0ee8714"><div class="ttname"><a href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">armnn::DepthToSpaceDescriptor</a></div><div class="ttdeci">SpaceToDepthDescriptor DepthToSpaceDescriptor</div><div class="ttdoc">A DepthToSpaceDescriptor for the DepthToSpaceLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00834">Descriptors.hpp:834</a></div></div>
7492</div><!-- fragment -->
7493</div>
7494</div>
7495<a id="aa6281ed3090b74167170c8f692688de5"></a>
7496<h2 class="memtitle"><span class="permalink"><a href="#aa6281ed3090b74167170c8f692688de5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[39/81]</span></h2>
7497
7498<div class="memitem">
7499<div class="memproto">
7500 <table class="memname">
7501 <tr>
7502 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7503 <td>(</td>
7504 <td class="paramtype">OverrideInputRangeEmptyNetwork&#160;</td>
7505 <td class="paramname"></td><td>)</td>
7506 <td></td>
7507 </tr>
7508 </table>
7509</div><div class="memdoc">
7510
7511<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00980">980</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7512
7513<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00034">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.xhtml#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00050">VisitLayers()</a>.</p>
7514<div class="fragment"><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;{</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <a class="code" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">RangeTracker::MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; Network network; <span class="comment">// Empty network</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></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; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</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; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.xhtml#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7515<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7516<div class="ttc" id="namespacearmnn_xhtml_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00027">QuantizerTest.cpp:27</a></div></div>
7517</div><!-- fragment -->
7518</div>
7519</div>
7520<a id="a0f1dc6ab5dccc96c5a4df37cc5bcb923"></a>
7521<h2 class="memtitle"><span class="permalink"><a href="#a0f1dc6ab5dccc96c5a4df37cc5bcb923">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[40/81]</span></h2>
7522
7523<div class="memitem">
7524<div class="memproto">
7525 <table class="memname">
7526 <tr>
7527 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7528 <td>(</td>
7529 <td class="paramtype">CheckNamedLstmLayerPeephole&#160;</td>
7530 <td class="paramname"></td><td>)</td>
7531 <td></td>
7532 </tr>
7533 </table>
7534</div><div class="memdoc">
7535
7536<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l00985">985</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7537
7538<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00049">LstmInputParams::m_CellToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00050">LstmInputParams::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00869">LstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7539<div class="fragment"><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;{</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; descriptor.m_PeepholeEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</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; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</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; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</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; std::vector&lt;float&gt; cellToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; std::vector&lt;unsigned int&gt; cellToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; ConstTensor cellToForgetWeights(</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; TensorInfo(4, cellToForgetWeightsDimensions.data(), DataType::Float32), cellToForgetWeightsData);</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; std::vector&lt;float&gt; cellToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; std::vector&lt;unsigned int&gt; cellToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; ConstTensor cellToOutputWeights(</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; TensorInfo(4, cellToOutputWeightsDimensions.data(), DataType::Float32), cellToOutputWeightsData);</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; params.m_CellToForgetWeights = &amp;cellToForgetWeights;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; params.m_CellToOutputWeights = &amp;cellToOutputWeights;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div></div><!-- fragment -->
7540</div>
7541</div>
7542<a id="ad432424d97021ae6c81e38130b1ec5d6"></a>
7543<h2 class="memtitle"><span class="permalink"><a href="#ad432424d97021ae6c81e38130b1ec5d6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[41/81]</span></h2>
7544
7545<div class="memitem">
7546<div class="memproto">
7547 <table class="memname">
7548 <tr>
7549 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7550 <td>(</td>
7551 <td class="paramtype">OverrideInputRangeNoInputLayers&#160;</td>
7552 <td class="paramname"></td><td>)</td>
7553 <td></td>
7554 </tr>
7555 </table>
7556</div><div class="memdoc">
7557
7558<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00994">994</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7559
7560<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l01300">Network::AddAdditionLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00034">Network::GetGraph()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00181">Graph::GetInputLayers()</a>, <a class="el" href="_range_tracker_8hpp_source.xhtml#l00029">RangeTracker::IsEmpty()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00050">VisitLayers()</a>.</p>
7561<div class="fragment"><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;{</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; RangeTracker ranges;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; Network network;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; network.AddAdditionLayer(); <span class="comment">// Network with no input layers</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// Empty list of input layers</span></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; OverrideInputRangeVisitor overrideInputRangeVisitor(ranges, 0, minMaxRange);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitor);</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; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty()); <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.xhtml#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7562<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7563<div class="ttc" id="namespacearmnn_xhtml_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00027">QuantizerTest.cpp:27</a></div></div>
7564</div><!-- fragment -->
7565</div>
7566</div>
7567<a id="a6e97e093453fc053a5c82386927a0d6c"></a>
7568<h2 class="memtitle"><span class="permalink"><a href="#a6e97e093453fc053a5c82386927a0d6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[42/81]</span></h2>
7569
7570<div class="memitem">
7571<div class="memproto">
7572 <table class="memname">
7573 <tr>
7574 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7575 <td>(</td>
7576 <td class="paramtype">OverrideInputRangeInputLayers&#160;</td>
7577 <td class="paramname"></td><td>)</td>
7578 <td></td>
7579 </tr>
7580 </table>
7581</div><div class="memdoc">
7582
7583<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01009">1009</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7584
7585<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l01300">Network::AddAdditionLayer()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01041">Network::AddInputLayer()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01310">Network::AddOutputLayer()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_network_8hpp_source.xhtml#l00034">Network::GetGraph()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00181">Graph::GetInputLayers()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_range_tracker_8cpp_source.xhtml#l00029">RangeTracker::GetRange()</a>, <a class="el" href="_range_tracker_8hpp_source.xhtml#l00032">RangeTracker::HasRanges()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_range_tracker_8hpp_source.xhtml#l00029">RangeTracker::IsEmpty()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00050">VisitLayers()</a>.</p>
7586<div class="fragment"><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; RangeTracker ranges;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> minMaxRange(-12.3f, 45.6f); <span class="comment">// Range to use for the override</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; Network network;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="comment">// Adding the layers</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; IConnectableLayer* input0 = network.AddInputLayer(0);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; IConnectableLayer* input1 = network.AddInputLayer(1);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; IConnectableLayer* addition = network.AddAdditionLayer();</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; IConnectableLayer* output = network.AddOutputLayer(2);</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">// Connecting the layer</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="comment">// Setting the TensorInfos</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</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="keyword">auto</span> inputLayers = network.GetGraph().GetInputLayers(); <span class="comment">// List of input layers</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="comment">// Trying to override the input range for the input layer with binding id 3 (does not exist in the network)</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer3(ranges, 3, minMaxRange);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer3);</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; <span class="comment">// Check that the map of ranges remained untouched</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.IsEmpty());</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="comment">// Override the input range for the input layer with binding id 1</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; OverrideInputRangeVisitor overrideInputRangeVisitorLayer1(ranges, 1, minMaxRange);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(inputLayers, overrideInputRangeVisitorLayer1);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="comment">// Check that the map of ranges has been populated</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.IsEmpty());</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 0 does not exist</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(!ranges.HasRanges(input0-&gt;GetGuid()));</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="comment">// Check that an entry for the input layer with binding id 1 exists</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.HasRanges(input1-&gt;GetGuid()));</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; <span class="comment">// Check the the overridden values are what we intended to set</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a>(ranges.GetRange(input1-&gt;GetGuid(), 0) == minMaxRange);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.xhtml#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
7587<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a0c262ba6f6c189a2d092d127c1b7627b"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK</a></div><div class="ttdeci">BOOST_CHECK(profilingService.GetCurrentState()==ProfilingState::WaitingForAck)</div></div>
7588<div class="ttc" id="namespacearmnn_xhtml_a997e96288bdb106c922202e3f33d5d7b"><div class="ttname"><a href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">armnn::MinMaxRange</a></div><div class="ttdeci">std::pair&lt; float, float &gt; MinMaxRange</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00027">QuantizerTest.cpp:27</a></div></div>
7589<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7590</div><!-- fragment -->
7591</div>
7592</div>
7593<a id="a0d00c75b42e46b3a7dd78f9a40324c33"></a>
7594<h2 class="memtitle"><span class="permalink"><a href="#a0d00c75b42e46b3a7dd78f9a40324c33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[43/81]</span></h2>
7595
7596<div class="memitem">
7597<div class="memproto">
7598 <table class="memname">
7599 <tr>
7600 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7601 <td>(</td>
7602 <td class="paramtype">CheckLstmLayerProjection&#160;</td>
7603 <td class="paramname"></td><td>)</td>
7604 <td></td>
7605 </tr>
7606 </table>
7607</div><div class="memdoc">
7608
7609<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l01073">1073</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7610
7611<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7612<div class="fragment"><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;{</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</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; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</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; LstmInputParams params;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; TestLstmLayerVisitor visitor(descriptor, params);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; Network net;</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; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;}</div></div><!-- fragment -->
7613</div>
7614</div>
7615<a id="a881ab05533f917737509402730668e4a"></a>
7616<h2 class="memtitle"><span class="permalink"><a href="#a881ab05533f917737509402730668e4a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[44/81]</span></h2>
7617
7618<div class="memitem">
7619<div class="memproto">
7620 <table class="memname">
7621 <tr>
7622 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7623 <td>(</td>
7624 <td class="paramtype">QuantizeFullyConnected&#160;</td>
7625 <td class="paramname"></td><td>)</td>
7626 <td></td>
7627 </tr>
7628 </table>
7629</div><div class="memdoc">
7630
7631<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01145">1145</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7632
7633<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
7634<div class="fragment"><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;{</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <a class="code" href="namespacearmnn.xhtml#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.xhtml#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01098">QuantizerTest.cpp:1098</a></div></div>
7635</div><!-- fragment -->
7636</div>
7637</div>
7638<a id="a69dd8c7608ff0935a247f3aa07f98212"></a>
7639<h2 class="memtitle"><span class="permalink"><a href="#a69dd8c7608ff0935a247f3aa07f98212">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[45/81]</span></h2>
7640
7641<div class="memitem">
7642<div class="memproto">
7643 <table class="memname">
7644 <tr>
7645 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7646 <td>(</td>
7647 <td class="paramtype">QuantizeFullyConnectedBiasEnabled&#160;</td>
7648 <td class="paramname"></td><td>)</td>
7649 <td></td>
7650 </tr>
7651 </table>
7652</div><div class="memdoc">
7653
7654<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01150">1150</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7655
7656<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
7657<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a245661fc96c9c4a9b898e1d98c8c6962">ValidateFullyConnectedLayer</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a245661fc96c9c4a9b898e1d98c8c6962"><div class="ttname"><a href="namespacearmnn.xhtml#a245661fc96c9c4a9b898e1d98c8c6962">armnn::ValidateFullyConnectedLayer</a></div><div class="ttdeci">void ValidateFullyConnectedLayer(const bool biasEnabled)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01098">QuantizerTest.cpp:1098</a></div></div>
7658</div><!-- fragment -->
7659</div>
7660</div>
7661<a id="a3a3105d08231d5f2e53511bab46224c9"></a>
7662<h2 class="memtitle"><span class="permalink"><a href="#a3a3105d08231d5f2e53511bab46224c9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[46/81]</span></h2>
7663
7664<div class="memitem">
7665<div class="memproto">
7666 <table class="memname">
7667 <tr>
7668 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7669 <td>(</td>
7670 <td class="paramtype">CheckNamedLstmLayerProjection&#160;</td>
7671 <td class="paramname"></td><td>)</td>
7672 <td></td>
7673 </tr>
7674 </table>
7675</div><div class="memdoc">
7676
7677<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l01159">1159</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7678
7679<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01400">Network::AddLstmLayer()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00861">LstmDescriptor::m_ActivationFunc</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00053">LstmInputParams::m_CellBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00867">LstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00863">LstmDescriptor::m_ClippingThresCell</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00865">LstmDescriptor::m_ClippingThresProj</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00052">LstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00042">LstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00041">LstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00043">LstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00054">LstmInputParams::m_OutputGateBias</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00056">LstmInputParams::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00871">LstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00055">LstmInputParams::m_ProjectionWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00046">LstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_lstm_params_8hpp_source.xhtml#l00045">LstmInputParams::m_RecurrentToForgetWeights</a>, and <a class="el" href="_lstm_params_8hpp_source.xhtml#l00047">LstmInputParams::m_RecurrentToOutputWeights</a>.</p>
7680<div class="fragment"><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;{</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; LstmDescriptor descriptor;</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; descriptor.m_ActivationFunc = 3;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; descriptor.m_ClippingThresProj = 0.5f;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; descriptor.m_ClippingThresCell = 0.3f;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; descriptor.m_CifgEnabled = <span class="keyword">true</span>; <span class="comment">// if this is true then we DON&#39;T need to set the OptCifgParams</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; descriptor.m_ProjectionEnabled = <span class="keyword">true</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; std::vector&lt;float&gt; inputToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::Float32), inputToForgetWeightsData);</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; std::vector&lt;float&gt; inputToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::Float32), inputToCellWeightsData);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; std::vector&lt;float&gt; inputToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::Float32), inputToOutputWeightsData);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; std::vector&lt;float&gt; recurrentToForgetWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::Float32), recurrentToForgetWeightsData);</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; std::vector&lt;float&gt; recurrentToCellWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::Float32), recurrentToCellWeightsData);</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; std::vector&lt;float&gt; recurrentToOutputWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::Float32), recurrentToOutputWeightsData);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; std::vector&lt;float&gt; forgetGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Float32), forgetGateBiasData);</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; std::vector&lt;float&gt; cellBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; 4, cellBiasDimensions.data(), DataType::Float32), cellBiasData);</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; std::vector&lt;float&gt; outputGateBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Float32), outputGateBiasData);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; std::vector&lt;float&gt; projectionBiasData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; std::vector&lt;unsigned int&gt; projectionBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; ConstTensor projectionBias(</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; TensorInfo(4, projectionBiasDimensions.data(), DataType::Float32), projectionBiasData);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; std::vector&lt;float&gt; projectionWeightsData = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; std::vector&lt;unsigned int&gt; projectionWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; ConstTensor projectionWeights(</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; TensorInfo(4, projectionWeightsDimensions.data(), DataType::Float32), projectionWeightsData);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; LstmInputParams params;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; params.m_ProjectionWeights = &amp;projectionWeights;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; params.m_ProjectionBias = &amp;projectionBias;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; TestLstmLayerVisitor visitor(descriptor, params, layerName);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; Network net;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; IConnectableLayer *<span class="keyword">const</span> layer = net.AddLstmLayer(descriptor, params, layerName);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div></div><!-- fragment -->
7681</div>
7682</div>
7683<a id="aa117e0112fdc02a7a011cfb39dc596ab"></a>
7684<h2 class="memtitle"><span class="permalink"><a href="#aa117e0112fdc02a7a011cfb39dc596ab">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[47/81]</span></h2>
7685
7686<div class="memitem">
7687<div class="memproto">
7688 <table class="memname">
7689 <tr>
7690 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7691 <td>(</td>
7692 <td class="paramtype">QuantizeConvolution2d&#160;</td>
7693 <td class="paramname"></td><td>)</td>
7694 <td></td>
7695 </tr>
7696 </table>
7697</div><div class="memdoc">
7698
7699<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01231">1231</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7700
7701<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>.</p>
7702<div class="fragment"><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;{</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="namespacearmnn.xhtml#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.xhtml#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01155">QuantizerTest.cpp:1155</a></div></div>
7703</div><!-- fragment -->
7704</div>
7705</div>
7706<a id="a9827adb2cf787460578999e0484568fa"></a>
7707<h2 class="memtitle"><span class="permalink"><a href="#a9827adb2cf787460578999e0484568fa">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[48/81]</span></h2>
7708
7709<div class="memitem">
7710<div class="memproto">
7711 <table class="memname">
7712 <tr>
7713 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7714 <td>(</td>
7715 <td class="paramtype">QuantizeConvolution2dWithBiases&#160;</td>
7716 <td class="paramname"></td><td>)</td>
7717 <td></td>
7718 </tr>
7719 </table>
7720</div><div class="memdoc">
7721
7722<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01236">1236</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7723
7724<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>.</p>
7725<div class="fragment"><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;{</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <a class="code" href="namespacearmnn.xhtml#a14cfd39cfc30682fa821ade3dd298426">TestQuantizeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a14cfd39cfc30682fa821ade3dd298426"><div class="ttname"><a href="namespacearmnn.xhtml#a14cfd39cfc30682fa821ade3dd298426">armnn::TestQuantizeConvolution2d</a></div><div class="ttdeci">void TestQuantizeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01155">QuantizerTest.cpp:1155</a></div></div>
7726</div><!-- fragment -->
7727</div>
7728</div>
7729<a id="a84e5356296be66aa930ec53118f5ef6b"></a>
7730<h2 class="memtitle"><span class="permalink"><a href="#a84e5356296be66aa930ec53118f5ef6b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[49/81]</span></h2>
7731
7732<div class="memitem">
7733<div class="memproto">
7734 <table class="memname">
7735 <tr>
7736 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7737 <td>(</td>
7738 <td class="paramtype">CheckQuantizedLstmLayer&#160;</td>
7739 <td class="paramname"></td><td>)</td>
7740 <td></td>
7741 </tr>
7742 </table>
7743</div><div class="memdoc">
7744
7745<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l01246">1246</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7746
7747<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01636">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
7748<div class="fragment"><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;{</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</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; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</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;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</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; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</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;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</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; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</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; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; QuantizedLstmInputParams params;</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; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</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; TestQuantizedLstmLayerVisitor visitor(params);</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; Network net;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;}</div></div><!-- fragment -->
7749</div>
7750</div>
7751<a id="a1db5d836b83fc71602a7993616de5b42"></a>
7752<h2 class="memtitle"><span class="permalink"><a href="#a1db5d836b83fc71602a7993616de5b42">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[50/81]</span></h2>
7753
7754<div class="memitem">
7755<div class="memproto">
7756 <table class="memname">
7757 <tr>
7758 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7759 <td>(</td>
7760 <td class="paramtype">QuantizeDepthwiseConvolution2d&#160;</td>
7761 <td class="paramname"></td><td>)</td>
7762 <td></td>
7763 </tr>
7764 </table>
7765</div><div class="memdoc">
7766
7767<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01317">1317</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7768
7769<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>.</p>
7770<div class="fragment"><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;{</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; <a class="code" href="namespacearmnn.xhtml#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.xhtml#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01241">QuantizerTest.cpp:1241</a></div></div>
7771</div><!-- fragment -->
7772</div>
7773</div>
7774<a id="a891abdb9079715cbcf85792e2b450652"></a>
7775<h2 class="memtitle"><span class="permalink"><a href="#a891abdb9079715cbcf85792e2b450652">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[51/81]</span></h2>
7776
7777<div class="memitem">
7778<div class="memproto">
7779 <table class="memname">
7780 <tr>
7781 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7782 <td>(</td>
7783 <td class="paramtype">QuantizeDepthwiseConvolution2dWithBiases&#160;</td>
7784 <td class="paramname"></td><td>)</td>
7785 <td></td>
7786 </tr>
7787 </table>
7788</div><div class="memdoc">
7789
7790<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01322">1322</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7791
7792<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>.</p>
7793<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a5abbe8a9ee003c1379a921dbe2745b81">TestQuantizeDepthwiseConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5abbe8a9ee003c1379a921dbe2745b81"><div class="ttname"><a href="namespacearmnn.xhtml#a5abbe8a9ee003c1379a921dbe2745b81">armnn::TestQuantizeDepthwiseConvolution2d</a></div><div class="ttdeci">void TestQuantizeDepthwiseConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01241">QuantizerTest.cpp:1241</a></div></div>
7794</div><!-- fragment -->
7795</div>
7796</div>
7797<a id="abd033569519fec65077ea983f6c75a9d"></a>
7798<h2 class="memtitle"><span class="permalink"><a href="#abd033569519fec65077ea983f6c75a9d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[52/81]</span></h2>
7799
7800<div class="memitem">
7801<div class="memproto">
7802 <table class="memname">
7803 <tr>
7804 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7805 <td>(</td>
7806 <td class="paramtype">QuantizeInstanceNormalization&#160;</td>
7807 <td class="paramname"></td><td>)</td>
7808 <td></td>
7809 </tr>
7810 </table>
7811</div><div class="memdoc">
7812
7813<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01327">1327</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7814
7815<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7816<div class="fragment"><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;{</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keyword">class </span>TestInstanceNormalizationQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; {</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; TestInstanceNormalizationQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestInstanceNormalizationQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitInstanceNormalizationLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keyword">const</span> InstanceNormalizationDescriptor&amp; descriptor,</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; }</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; };</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; <span class="keyword">const</span> TensorShape tensorShape{ 1, 4, 4, 1 };</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; IConnectableLayer* instanceNormLayer = network-&gt;AddInstanceNormalizationLayer(InstanceNormalizationDescriptor());</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(instanceNormLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; instanceNormLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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">//test QAsymmS8 quantization</span></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; TestInstanceNormalizationQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16Options(DataType::QSymmS16);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; TestInstanceNormalizationQuantization validatorQSymmS16(qSymmS16Options, tensorShape, tensorShape);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7817<div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7818<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7819<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>
7820<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7821<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7822<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7823<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7824<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7825<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7826</div><!-- fragment -->
7827</div>
7828</div>
7829<a id="a492fae0605d06684297540bb9af319dc"></a>
7830<h2 class="memtitle"><span class="permalink"><a href="#a492fae0605d06684297540bb9af319dc">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[53/81]</span></h2>
7831
7832<div class="memitem">
7833<div class="memproto">
7834 <table class="memname">
7835 <tr>
7836 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7837 <td>(</td>
7838 <td class="paramtype">CheckNamedQuantizedLstmLayer&#160;</td>
7839 <td class="paramname"></td><td>)</td>
7840 <td></td>
7841 </tr>
7842 </table>
7843</div><div class="memdoc">
7844
7845<p class="definition">Definition at line <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml#l01335">1335</a> of file <a class="el" href="_const_tensor_layer_visitor_8cpp_source.xhtml">ConstTensorLayerVisitor.cpp</a>.</p>
7846
7847<p class="reference">References <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a8c9198a992b02e61a6777329d487dde3">IConnectableLayer::Accept()</a>, <a class="el" href="_network_8cpp_source.xhtml#l01636">Network::AddQuantizedLstmLayer()</a>, <a class="el" href="_profiler_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00045">QuantizedLstmInputParams::m_CellBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00044">QuantizedLstmInputParams::m_ForgetGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00043">QuantizedLstmInputParams::m_InputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00035">QuantizedLstmInputParams::m_InputToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00034">QuantizedLstmInputParams::m_InputToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00033">QuantizedLstmInputParams::m_InputToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00036">QuantizedLstmInputParams::m_InputToOutputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00046">QuantizedLstmInputParams::m_OutputGateBias</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00040">QuantizedLstmInputParams::m_RecurrentToCellWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00039">QuantizedLstmInputParams::m_RecurrentToForgetWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00038">QuantizedLstmInputParams::m_RecurrentToInputWeights</a>, <a class="el" href="_quantized_lstm_params_8hpp_source.xhtml#l00041">QuantizedLstmInputParams::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
7848<div class="fragment"><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;{</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* layerName = <span class="stringliteral">&quot;LstmLayer&quot;</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; std::vector&lt;uint8_t&gt; inputToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; std::vector&lt;unsigned int&gt; inputToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; ConstTensor inputToInputWeights(</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; TensorInfo(4, inputToInputWeightsDimensions.data(), DataType::QAsymmU8), inputToInputWeightsData);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; std::vector&lt;uint8_t&gt; inputToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; std::vector&lt;unsigned int&gt; inputToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; ConstTensor inputToForgetWeights(</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; TensorInfo(4, inputToForgetWeightsDimensions.data(), DataType::QAsymmU8), inputToForgetWeightsData);</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; std::vector&lt;uint8_t&gt; inputToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; std::vector&lt;unsigned int&gt; inputToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ConstTensor inputToCellWeights(</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; TensorInfo(4, inputToCellWeightsDimensions.data(), DataType::QAsymmU8), inputToCellWeightsData);</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; std::vector&lt;uint8_t&gt; inputToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; std::vector&lt;unsigned int&gt; inputToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; ConstTensor inputToOutputWeights(</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; TensorInfo(4, inputToOutputWeightsDimensions.data(), DataType::QAsymmU8), inputToOutputWeightsData);</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;</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; std::vector&lt;uint8_t&gt; recurrentToInputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; std::vector&lt;unsigned int&gt; recurrentToInputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; ConstTensor recurrentToInputWeights(TensorInfo(</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; 4, recurrentToInputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToInputWeightsData);</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; std::vector&lt;uint8_t&gt; recurrentToForgetWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; std::vector&lt;unsigned int&gt; recurrentToForgetWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; ConstTensor recurrentToForgetWeights(TensorInfo(</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; 4, recurrentToForgetWeightsDimensions.data(), DataType::QAsymmU8), recurrentToForgetWeightsData);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; std::vector&lt;uint8_t&gt; recurrentToCellWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; std::vector&lt;unsigned int&gt; recurrentToCellWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; ConstTensor recurrentToCellWeights(TensorInfo(</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; 4, recurrentToCellWeightsDimensions.data(), DataType::QAsymmU8), recurrentToCellWeightsData);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; std::vector&lt;uint8_t&gt; recurrentToOutputWeightsData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; std::vector&lt;unsigned int&gt; recurrentToOutputWeightsDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; ConstTensor recurrentToOutputWeights(TensorInfo(</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; 4, recurrentToOutputWeightsDimensions.data(), DataType::QAsymmU8), recurrentToOutputWeightsData);</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;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; std::vector&lt;int32_t&gt; inputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; std::vector&lt;unsigned int&gt; inputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; ConstTensor inputGateBias(</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; TensorInfo(4, inputGateBiasDimensions.data(), DataType::Signed32), inputGateBiasData);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; std::vector&lt;int32_t&gt; forgetGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; std::vector&lt;unsigned int&gt; forgetGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; ConstTensor forgetGateBias(TensorInfo(</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; 4, forgetGateBiasDimensions.data(), DataType::Signed32), forgetGateBiasData);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; std::vector&lt;int32_t&gt; cellBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; std::vector&lt;unsigned int&gt; cellBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; ConstTensor cellBias(TensorInfo(</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; 4, cellBiasDimensions.data(), DataType::Signed32), cellBiasData);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; std::vector&lt;int32_t&gt; outputGateBiasData = {1, 2, 3, 4, 5, 6, 7, 8, 9};</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; std::vector&lt;unsigned int&gt; outputGateBiasDimensions = {1, 1, 3, 3};</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; ConstTensor outputGateBias(TensorInfo(</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; 4, outputGateBiasDimensions.data(), DataType::Signed32), outputGateBiasData);</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; QuantizedLstmInputParams params;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; params.m_InputToInputWeights = &amp;inputToInputWeights;</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; params.m_InputToForgetWeights = &amp;inputToForgetWeights;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; params.m_InputToCellWeights = &amp;inputToCellWeights;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; params.m_InputToOutputWeights = &amp;inputToOutputWeights;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; params.m_RecurrentToInputWeights = &amp;recurrentToInputWeights;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; params.m_RecurrentToForgetWeights = &amp;recurrentToForgetWeights;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; params.m_RecurrentToCellWeights = &amp;recurrentToCellWeights;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; params.m_RecurrentToOutputWeights = &amp;recurrentToOutputWeights;</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; params.m_InputGateBias = &amp;inputGateBias;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; params.m_ForgetGateBias = &amp;forgetGateBias;</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; params.m_CellBias = &amp;cellBias;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; params.m_OutputGateBias = &amp;outputGateBias;</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; TestQuantizedLstmLayerVisitor visitor(params, layerName);</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; Network net;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; IConnectableLayer* <span class="keyword">const</span> layer = net.AddQuantizedLstmLayer(params, layerName);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;}</div></div><!-- fragment -->
7849</div>
7850</div>
7851<a id="a46d045b35ad6b8c2ffe0c04684f97779"></a>
7852<h2 class="memtitle"><span class="permalink"><a href="#a46d045b35ad6b8c2ffe0c04684f97779">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[54/81]</span></h2>
7853
7854<div class="memitem">
7855<div class="memproto">
7856 <table class="memname">
7857 <tr>
7858 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7859 <td>(</td>
7860 <td class="paramtype">QuantizeLogSoftmax&#160;</td>
7861 <td class="paramname"></td><td>)</td>
7862 <td></td>
7863 </tr>
7864 </table>
7865</div><div class="memdoc">
7866
7867<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01395">1395</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7868
7869<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7870<div class="fragment"><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="keyword">class </span>TestLogSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; {</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; TestLogSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestLogSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; <span class="keywordtype">void</span> VisitLogSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</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; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; }</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; };</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> descriptor;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">m_Beta</a> = 1.0f;</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; IConnectableLayer* logSoftmaxLayer = network-&gt;AddLogSoftmaxLayer(descriptor);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(logSoftmaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; logSoftmaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</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; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; TestLogSoftmaxQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; TestLogSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; TestLogSoftmaxQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; TestLogSoftmaxQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7871<div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
7872<div class="ttc" id="structarmnn_1_1_softmax_descriptor_xhtml_a8275d51ef9a584feb95726ea0522f6e5"><div class="ttname"><a href="structarmnn_1_1_softmax_descriptor.xhtml#a8275d51ef9a584feb95726ea0522f6e5">armnn::SoftmaxDescriptor::m_Beta</a></div><div class="ttdeci">float m_Beta</div><div class="ttdoc">Exponentiation value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00136">Descriptors.hpp:136</a></div></div>
7873<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7874<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>
7875<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7876<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7877<div class="ttc" id="namespacearmnn_xhtml_ac14705405cbcdd580df613de6766fe65"><div class="ttname"><a href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">armnn::LogSoftmaxDescriptor</a></div><div class="ttdeci">SoftmaxDescriptor LogSoftmaxDescriptor</div><div class="ttdoc">A LogSoftmaxDescriptor for the LogSoftmaxLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00142">Descriptors.hpp:142</a></div></div>
7878<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7879<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7880<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7881<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7882</div><!-- fragment -->
7883</div>
7884</div>
7885<a id="a7e94e9ab356805c498f5fc2fba87e4e6"></a>
7886<h2 class="memtitle"><span class="permalink"><a href="#a7e94e9ab356805c498f5fc2fba87e4e6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[55/81]</span></h2>
7887
7888<div class="memitem">
7889<div class="memproto">
7890 <table class="memname">
7891 <tr>
7892 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7893 <td>(</td>
7894 <td class="paramtype">QuantizeSoftmax&#160;</td>
7895 <td class="paramname"></td><td>)</td>
7896 <td></td>
7897 </tr>
7898 </table>
7899</div><div class="memdoc">
7900
7901<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01487">1487</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7902
7903<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01466">CreateNetworkWithSoftmaxLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7904<div class="fragment"><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;{</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keyword">class </span>TestSoftmaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; TestSoftmaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestSoftmaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitSoftmaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keyword">const</span> SoftmaxDescriptor&amp; descriptor,</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</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; <span class="comment">// Based off default static range [0.0f, 1.0f]</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; TestQuantizationParams(info, {1.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 0},</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; {1.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -128},</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; {1.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; {1.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</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;</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; SoftmaxDescriptor descriptor;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; descriptor.m_Beta = 1.0f;</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#a9c91b774c3089c55df77cc3a42da72de">CreateNetworkWithSoftmaxLayer</a>(descriptor, shape);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; TestSoftmaxQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; TestSoftmaxQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; TestSoftmaxQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; TestSoftmaxQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
7905<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
7906<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>
7907<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7908<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
7909<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7910<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7911<div class="ttc" id="namespacearmnn_xhtml_a9c91b774c3089c55df77cc3a42da72de"><div class="ttname"><a href="namespacearmnn.xhtml#a9c91b774c3089c55df77cc3a42da72de">armnn::CreateNetworkWithSoftmaxLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithSoftmaxLayer(const SoftmaxDescriptor &amp;descriptor, const TensorShape &amp;shape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01466">QuantizerTest.cpp:1466</a></div></div>
7912<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7913<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
7914</div><!-- fragment -->
7915</div>
7916</div>
7917<a id="a4734542212b5811d0511ea6b16f35168"></a>
7918<h2 class="memtitle"><span class="permalink"><a href="#a4734542212b5811d0511ea6b16f35168">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[56/81]</span></h2>
7919
7920<div class="memitem">
7921<div class="memproto">
7922 <table class="memname">
7923 <tr>
7924 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7925 <td>(</td>
7926 <td class="paramtype">QuantizeStandIn&#160;</td>
7927 <td class="paramname"></td><td>)</td>
7928 <td></td>
7929 </tr>
7930 </table>
7931</div><div class="memdoc">
7932
7933<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01542">1542</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7934
7935<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00996">StandInDescriptor::m_NumInputs</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00998">StandInDescriptor::m_NumOutputs</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
7936<div class="fragment"><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;{</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keyword">const</span> TensorShape tensorShape{ 1U };</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; StandInDescriptor descriptor;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; descriptor.m_NumInputs = 1;</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; descriptor.m_NumOutputs = 1;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; IConnectableLayer* standInLayer = network-&gt;AddStandInLayer(descriptor);</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(standInLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; standInLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; standInLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get())-&gt;ExportNetwork(),</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.xhtml">armnn::UnimplementedException</a>);</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="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.xhtml">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.xhtml">armnn::UnimplementedException</a>);</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; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; BOOST_CHECK_THROW(INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork(),</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <a class="code" href="classarmnn_1_1_unimplemented_exception.xhtml">armnn::UnimplementedException</a>);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_unimplemented_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_unimplemented_exception.xhtml">armnn::UnimplementedException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00098">Exceptions.hpp:98</a></div></div>
7937<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7938</div><!-- fragment -->
7939</div>
7940</div>
7941<a id="add22da50dd35a100548dde4c57ae89d1"></a>
7942<h2 class="memtitle"><span class="permalink"><a href="#add22da50dd35a100548dde4c57ae89d1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[57/81]</span></h2>
7943
7944<div class="memitem">
7945<div class="memproto">
7946 <table class="memname">
7947 <tr>
7948 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7949 <td>(</td>
7950 <td class="paramtype">QuantizePermute&#160;</td>
7951 <td class="paramname"></td><td>)</td>
7952 <td></td>
7953 </tr>
7954 </table>
7955</div><div class="memdoc">
7956
7957<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01620">1620</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7958
7959<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7960<div class="fragment"><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; <span class="keyword">class </span>TestPermuteQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; TestPermuteQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <span class="keywordtype">void</span> VisitPermuteLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <span class="keyword">const</span> PermuteDescriptor&amp; desc,</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; }</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; };</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; PermuteDescriptor desc;</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; IConnectableLayer* permute = network-&gt;AddPermuteLayer(desc);</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, permute, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; TestPermuteQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; TestPermuteQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; TestPermuteQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160;</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; TestPermuteQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;}</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>
7961<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7962<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
7963<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7964<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
7965<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7966<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7967</div><!-- fragment -->
7968</div>
7969</div>
7970<a id="a9a6bc66017eb7c132fd6e13ff0dcb540"></a>
7971<h2 class="memtitle"><span class="permalink"><a href="#a9a6bc66017eb7c132fd6e13ff0dcb540">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[58/81]</span></h2>
7972
7973<div class="memitem">
7974<div class="memproto">
7975 <table class="memname">
7976 <tr>
7977 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
7978 <td>(</td>
7979 <td class="paramtype">QuantizeSpaceToBatch&#160;</td>
7980 <td class="paramname"></td><td>)</td>
7981 <td></td>
7982 </tr>
7983 </table>
7984</div><div class="memdoc">
7985
7986<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01675">1675</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
7987
7988<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
7989<div class="fragment"><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;{</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keyword">class </span>TestSpaceToBatchQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; {</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; TestSpaceToBatchQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</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; TestSpaceToBatchQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordtype">void</span> VisitSpaceToBatchNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keyword">const</span> SpaceToBatchNdDescriptor&amp; spaceToBatchNdDescriptor,</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(spaceToBatchNdDescriptor, name);</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; }</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;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; SpaceToBatchNdDescriptor descriptor;</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; IConnectableLayer* spaceToBatch = network-&gt;AddSpaceToBatchNdLayer(descriptor);</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; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToBatch, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; TestSpaceToBatchQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160;</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; TestSpaceToBatchQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; TestSpaceToBatchQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160;</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; TestSpaceToBatchQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160;}</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>
7990<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
7991<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
7992<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
7993<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
7994<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
7995<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
7996</div><!-- fragment -->
7997</div>
7998</div>
7999<a id="aa78ce2bbe65cae8f3d60839467dbfc83"></a>
8000<h2 class="memtitle"><span class="permalink"><a href="#aa78ce2bbe65cae8f3d60839467dbfc83">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[59/81]</span></h2>
8001
8002<div class="memitem">
8003<div class="memproto">
8004 <table class="memname">
8005 <tr>
8006 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8007 <td>(</td>
8008 <td class="paramtype">QuantizeSpaceToDepth&#160;</td>
8009 <td class="paramname"></td><td>)</td>
8010 <td></td>
8011 </tr>
8012 </table>
8013</div><div class="memdoc">
8014
8015<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01730">1730</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8016
8017<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8018<div class="fragment"><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; <span class="keyword">class </span>TestSpaceToDepthQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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="keyword">public</span>:</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; {}</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; TestSpaceToDepthQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; {}</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; <span class="keywordtype">void</span> VisitSpaceToDepthLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="keyword">const</span> SpaceToDepthDescriptor&amp;,</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 },</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; }</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;</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="keyword">const</span> TensorShape shape{ 1u };</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; TensorInfo info(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), info);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; IConnectableLayer* spaceToDepth = network-&gt;AddSpaceToDepthLayer(SpaceToDepthDescriptor());</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, spaceToDepth, info);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; TestSpaceToDepthQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; TestSpaceToDepthQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; TestSpaceToDepthQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; TestSpaceToDepthQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8019<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8020<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8021<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8022<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8023<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8024<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8025<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8026<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8027<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8028</div><!-- fragment -->
8029</div>
8030</div>
8031<a id="aaa86b6903e41d2d2828e00b32f872375"></a>
8032<h2 class="memtitle"><span class="permalink"><a href="#aaa86b6903e41d2d2828e00b32f872375">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[60/81]</span></h2>
8033
8034<div class="memitem">
8035<div class="memproto">
8036 <table class="memname">
8037 <tr>
8038 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8039 <td>(</td>
8040 <td class="paramtype">QuantizePooling2d&#160;</td>
8041 <td class="paramname"></td><td>)</td>
8042 <td></td>
8043 </tr>
8044 </table>
8045</div><div class="memdoc">
8046
8047<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01788">1788</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8048
8049<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8050<div class="fragment"><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;{</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keyword">class </span>TestPooling2dQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; {</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; TestPooling2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordtype">void</span> VisitPooling2dLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <span class="keyword">const</span> Pooling2dDescriptor&amp; desc,</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; }</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; };</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160;</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keyword">auto</span> network = INetwork::Create();</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; TensorShape shape{1U};</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; Pooling2dDescriptor desc;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; activationDescriptor.m_B = -10.0f;</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; IConnectableLayer* pooling2d = network-&gt;AddPooling2dLayer(desc);</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</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; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; activation-&gt;GetOutputSlot(0).Connect(pooling2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; pooling2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; pooling2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; TestPooling2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; TestPooling2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160;</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; TestPooling2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160;</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; TestPooling2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;}</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>
8051<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8052<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8053<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8054<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8055</div><!-- fragment -->
8056</div>
8057</div>
8058<a id="a369051e180246c66b20c93de5fecee8c"></a>
8059<h2 class="memtitle"><span class="permalink"><a href="#a369051e180246c66b20c93de5fecee8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[61/81]</span></h2>
8060
8061<div class="memitem">
8062<div class="memproto">
8063 <table class="memname">
8064 <tr>
8065 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8066 <td>(</td>
8067 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>&#160;</td>
8068 <td class="paramname"></td><td>)</td>
8069 <td></td>
8070 </tr>
8071 </table>
8072</div><div class="memdoc">
8073
8074<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01857">1857</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8075
8076<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8077<div class="fragment"><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;{</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; <span class="keyword">class </span>TestConstantQuantization : <span class="keyword">public</span> TestAdditionQuantization</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; {</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; TestConstantQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; : TestAdditionQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; TestConstantQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; : TestAdditionQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; <span class="keywordtype">void</span> VisitConstantLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; <span class="keyword">const</span> ConstTensor&amp; input,</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(input, name);</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <span class="comment">// Based off the range of values in the const tensor used for the test: [-2.0f, 6.0f]</span></div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; TestQuantizationParams(info, {8.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 64},</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; {8.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, -64},</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; {6.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; {6.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</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; };</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160;</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; <span class="comment">// Constant layer data</span></div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; std::vector&lt;float&gt; data = {-2.0f, -1.0f, 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f};</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 1U, 3U, 3U};</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; TensorInfo tensorInfo(shape, DataType::Float32);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; ConstTensor constantTensor(tensorInfo, data);</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; IConnectableLayer* constant = network-&gt;AddConstantLayer(constantTensor);</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; input-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; constant-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <span class="comment">// Set TensorInfo in the remaining layers</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; constant-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; TestConstantQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; TestConstantQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; TestConstantQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160;</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; TestConstantQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8078<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8079<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>
8080<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8081<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8082<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8083<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8084<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8085<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8086</div><!-- fragment -->
8087</div>
8088</div>
8089<a id="ae3af95ea62252012cf93a98167afef64"></a>
8090<h2 class="memtitle"><span class="permalink"><a href="#ae3af95ea62252012cf93a98167afef64">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[62/81]</span></h2>
8091
8092<div class="memitem">
8093<div class="memproto">
8094 <table class="memname">
8095 <tr>
8096 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8097 <td>(</td>
8098 <td class="paramtype">QuantizeArgMinMax&#160;</td>
8099 <td class="paramname"></td><td>)</td>
8100 <td></td>
8101 </tr>
8102 </table>
8103</div><div class="memdoc">
8104
8105<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01929">1929</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8106
8107<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00056">ArgMinMaxDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8108<div class="fragment"><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;{</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="keyword">class </span>TestArgMinMaxQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; TestArgMinMaxQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; TestArgMinMaxQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; {}</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; }</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; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; <span class="keywordtype">void</span> VisitArgMinMaxLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <span class="keyword">const</span> ArgMinMaxDescriptor&amp; argMinMaxDescriptor,</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(argMinMaxDescriptor, name);</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; }</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; };</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="keyword">const</span> TensorShape inputShape{ 1, 1, 1, 5 };</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 1, 1, 1 };</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; ArgMinMaxDescriptor argMinMaxDescriptor;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; argMinMaxDescriptor.m_Function = ArgMinMaxFunction::Max;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; IConnectableLayer* argMinMaxLayer = network-&gt;AddArgMinMaxLayer(argMinMaxDescriptor);</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; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; input-&gt;GetOutputSlot(0).Connect(argMinMaxLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <span class="comment">// Set tensor info</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; argMinMaxLayer-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160;</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; TestArgMinMaxQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; TestArgMinMaxQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; TestArgMinMaxQuantization validatorQSymmS8(qSymmS8Options, inputShape, outputShape);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; TestArgMinMaxQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8109<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8110<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>
8111<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00171">Types.hpp:171</a></div></div>
8112<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8113<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8114<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8115<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8116<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8117</div><!-- fragment -->
8118</div>
8119</div>
8120<a id="ab83f837cdd5bfcff537dae72a96d6fc8"></a>
8121<h2 class="memtitle"><span class="permalink"><a href="#ab83f837cdd5bfcff537dae72a96d6fc8">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[63/81]</span></h2>
8122
8123<div class="memitem">
8124<div class="memproto">
8125 <table class="memname">
8126 <tr>
8127 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8128 <td>(</td>
8129 <td class="paramtype">QuantizeComparison&#160;</td>
8130 <td class="paramname"></td><td>)</td>
8131 <td></td>
8132 </tr>
8133 </table>
8134</div><div class="memdoc">
8135
8136<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02018">2018</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8137
8138<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8139<div class="fragment"><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;{</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keyword">class </span>TestComparisonQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; {</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; TestComparisonQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; TestComparisonQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</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; <span class="keywordtype">void</span> VisitComparisonLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="keyword">const</span> ComparisonDescriptor&amp; descriptor,</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160;</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0};</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</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; };</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="keyword">const</span> TensorShape tensorShape{ 1u };</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; <span class="keyword">const</span> TensorInfo tensorInfo(tensorShape, DataType::Float32);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; ComparisonDescriptor descriptor(ComparisonOperation::LessOrEqual);</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160;</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; IConnectableLayer* inputLayer0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; IConnectableLayer* inputLayer1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; IConnectableLayer* comparisonLayer = network-&gt;AddComparisonLayer(descriptor);</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; inputLayer0-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; inputLayer1-&gt;GetOutputSlot(0).Connect(comparisonLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160;</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; inputLayer0-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; inputLayer1-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; comparisonLayer-&gt;GetOutputSlot(0).SetTensorInfo(tensorInfo);</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160;</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; TestComparisonQuantization validatorQAsymmU8(tensorShape, tensorShape);</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; <span class="comment">// test QAsymmS8 quantization</span></div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; TestComparisonQuantization validatorQAsymmS8(qAsymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160;</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; TestComparisonQuantization validatorQSymmS8(qSymmS8Options, tensorShape, tensorShape);</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="comment">// test QuantisedSymmS16 quantization</span></div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; TestComparisonQuantization validatorQSymmS16(qSymmS16options, tensorShape, tensorShape);</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8140<div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
8141<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8142<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>
8143<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8144<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8145<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8146<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8147<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8148<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8149</div><!-- fragment -->
8150</div>
8151</div>
8152<a id="add47ebcd4a59304a25c71996aea2b38b"></a>
8153<h2 class="memtitle"><span class="permalink"><a href="#add47ebcd4a59304a25c71996aea2b38b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[64/81]</span></h2>
8154
8155<div class="memitem">
8156<div class="memproto">
8157 <table class="memname">
8158 <tr>
8159 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8160 <td>(</td>
8161 <td class="paramtype">QuantizeConcat&#160;</td>
8162 <td class="paramname"></td><td>)</td>
8163 <td></td>
8164 </tr>
8165 </table>
8166</div><div class="memdoc">
8167
8168<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02090">2090</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8169
8170<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8171<div class="fragment"><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;{</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; <span class="keyword">class </span>TestConcatQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; {</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; TestConcatQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; TestConcatQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; }</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; <span class="keywordtype">void</span> VisitConcatLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="keyword">const</span> OriginsDescriptor&amp; originsDescriptor,</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(originsDescriptor, name);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; TestQuantizationParams(</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; outputInfo, {60.8f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 65},</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; {60.8f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, -63},</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; {45.3f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; {45.3f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0});</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; TensorInfo inputInfo0 = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; TensorInfo inputInfo1 = layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; TensorInfo inputInfo2 = layer-&gt;GetInputSlot(2).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo1);</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; TestDifferentQuantizationScale(inputInfo0, inputInfo2);</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; TestDifferentQuantizationScale(inputInfo1, inputInfo2);</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; TestDifferentQuantizationScale(inputInfo0, outputInfo);</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; }</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;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; IConnectableLayer* input2 = network-&gt;AddInputLayer(2);</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; OriginsDescriptor descriptor(3, 1);</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; IConnectableLayer* concatLayer = network-&gt;AddConcatLayer(descriptor);</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; IConnectableLayer* output0 = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160;</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; input0-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; input1-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; input2-&gt;GetOutputSlot(0).Connect(concatLayer-&gt;GetInputSlot(2));</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; concatLayer-&gt;GetOutputSlot(0).Connect(output0-&gt;GetInputSlot(0));</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; input2-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; concatLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</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; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; <a class="code" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQAsymmU8 = INetworkQuantizer::Create(network.get());</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <a class="code" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options);</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; <a class="code" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">INetworkQuantizerPtr</a> quantizerPtrQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="comment">// Override the input ranges</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordtype">float</span> min = -15.5f;</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; <span class="keywordtype">float</span> max = 45.3f;</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160;</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; quantizerPtrQAsymmU8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; quantizerPtrQSymmS8-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(0, (min + 2.1f), (max - 3.2f));</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(1, (min + 6.7f), max);</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; quantizerPtrQSymmS16-&gt;OverrideInputRange(2, min, (max - 7.8f));</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = quantizerPtrQAsymmU8-&gt;ExportNetwork();</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; TestConcatQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = quantizerPtrQSymmS8-&gt;ExportNetwork();</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; TestConcatQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = quantizerPtrQSymmS16-&gt;ExportNetwork();</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; TestConcatQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8172<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8173<div class="ttc" id="namespacearmnn_xhtml_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.xhtml#l00029">INetworkQuantizer.hpp:29</a></div></div>
8174<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>
8175<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00171">Types.hpp:171</a></div></div>
8176<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8177<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8178<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8179<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8180<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8181</div><!-- fragment -->
8182</div>
8183</div>
8184<a id="a9258afcd4c6d8443c9130d8c9bf26442"></a>
8185<h2 class="memtitle"><span class="permalink"><a href="#a9258afcd4c6d8443c9130d8c9bf26442">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[65/81]</span></h2>
8186
8187<div class="memitem">
8188<div class="memproto">
8189 <table class="memname">
8190 <tr>
8191 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8192 <td>(</td>
8193 <td class="paramtype">QuantizeReshape&#160;</td>
8194 <td class="paramname"></td><td>)</td>
8195 <td></td>
8196 </tr>
8197 </table>
8198</div><div class="memdoc">
8199
8200<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02198">2198</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8201
8202<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8203<div class="fragment"><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;{</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keyword">class </span>TestReshapeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; {</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; TestReshapeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</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; TestReshapeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitReshapeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; <span class="keyword">const</span> ReshapeDescriptor&amp; reshapeDescriptor,</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(reshapeDescriptor, name);</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; }</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160; };</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160;</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; ReshapeDescriptor descriptor({1, 2, 3, 4});</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; IConnectableLayer* reshape = network-&gt;AddReshapeLayer(descriptor);</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, reshape, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; TestReshapeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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"> 2237</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; TestReshapeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160; TestReshapeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; TestReshapeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;}</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>
8204<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8205<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8206<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8207<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8208<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8209<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8210</div><!-- fragment -->
8211</div>
8212</div>
8213<a id="a23a4f3c387a2a3a035e97764e34277c6"></a>
8214<h2 class="memtitle"><span class="permalink"><a href="#a23a4f3c387a2a3a035e97764e34277c6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[66/81]</span></h2>
8215
8216<div class="memitem">
8217<div class="memproto">
8218 <table class="memname">
8219 <tr>
8220 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8221 <td>(</td>
8222 <td class="paramtype">QuantizeSplitter&#160;</td>
8223 <td class="paramname"></td><td>)</td>
8224 <td></td>
8225 </tr>
8226 </table>
8227</div><div class="memdoc">
8228
8229<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02253">2253</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8230
8231<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8232<div class="fragment"><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;{</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160; <span class="keyword">class </span>TestSplitterQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; {</div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</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"> 2261</span>&#160; TestSplitterQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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="keyword">virtual</span> <span class="keywordtype">void</span> VisitSplitterLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">SplitterDescriptor</a>&amp; desc,</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</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"> 2270</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; }</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; };</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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"> 2282</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; ViewsDescriptor splitterDesc(2,4);</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160; IConnectableLayer* splitter = network-&gt;AddSplitterLayer(splitterDesc);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, splitter, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; TestSplitterQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160;</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; TestSplitterQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; TestSplitterQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; TestSplitterQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160;}</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>
8233<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8234<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8235<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8236<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8237<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8238<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8239<div class="ttc" id="namespacearmnn_xhtml_a60291543fe872b795e71e05bcd835fd1"><div class="ttname"><a href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a></div><div class="ttdeci">ViewsDescriptor SplitterDescriptor</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_fwd_8hpp_source.xhtml#l00051">DescriptorsFwd.hpp:51</a></div></div>
8240</div><!-- fragment -->
8241</div>
8242</div>
8243<a id="a102f37a09de1b0d4d78740a3c12902bf"></a>
8244<h2 class="memtitle"><span class="permalink"><a href="#a102f37a09de1b0d4d78740a3c12902bf">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[67/81]</span></h2>
8245
8246<div class="memitem">
8247<div class="memproto">
8248 <table class="memname">
8249 <tr>
8250 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8251 <td>(</td>
8252 <td class="paramtype">QuantizeResize&#160;</td>
8253 <td class="paramname"></td><td>)</td>
8254 <td></td>
8255 </tr>
8256 </table>
8257</div><div class="memdoc">
8258
8259<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02307">2307</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8260
8261<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00746">ResizeDescriptor::m_TargetHeight</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8262<div class="fragment"><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;{</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keyword">class </span>TestResizeQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; {</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; TestResizeQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape)</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; {}</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; TestResizeQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; {}</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="keywordtype">void</span> VisitResizeLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <span class="keyword">const</span> ResizeDescriptor&amp; resizeDescriptor,</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(resizeDescriptor, name);</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; }</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; };</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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"> 2336</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160;</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; descriptor.m_TargetHeight = 3;</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; descriptor.m_TargetWidth = 3;</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; IConnectableLayer* resizeLayer = network-&gt;AddResizeLayer(descriptor);</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"> 2344</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, resizeLayer, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160; TestResizeQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; TestResizeQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; TestResizeQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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"> 2360</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; TestResizeQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;}</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>
8263<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8264<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8265<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8266<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8267<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8268<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8269</div><!-- fragment -->
8270</div>
8271</div>
8272<a id="a5f9c6094ae666c8e14907307d0481fac"></a>
8273<h2 class="memtitle"><span class="permalink"><a href="#a5f9c6094ae666c8e14907307d0481fac">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[68/81]</span></h2>
8274
8275<div class="memitem">
8276<div class="memproto">
8277 <table class="memname">
8278 <tr>
8279 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8280 <td>(</td>
8281 <td class="paramtype">QuantizeStridedSlice&#160;</td>
8282 <td class="paramname"></td><td>)</td>
8283 <td></td>
8284 </tr>
8285 </table>
8286</div><div class="memdoc">
8287
8288<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02366">2366</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8289
8290<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8291<div class="fragment"><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;{</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="keyword">class </span>TestStridedSliceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</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"> 2370</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; TestStridedSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; TestStridedSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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"> 2379</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitStridedSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; <span class="keyword">const</span> StridedSliceDescriptor&amp; desc,</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; {</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; }</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"> 2388</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; <span class="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</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; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160;</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; StridedSliceDescriptor stridedSliceDesc;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; IConnectableLayer* stridedSlice = network-&gt;AddStridedSliceLayer(stridedSliceDesc);</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160;</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, stridedSlice, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160;</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; TestStridedSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160;</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; TestStridedSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160;</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; TestStridedSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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"> 2415</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; TestStridedSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160;}</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>
8292<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8293<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8294<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8295<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8296<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8297<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8298</div><!-- fragment -->
8299</div>
8300</div>
8301<a id="aec7cf8e3927ee7d24f8b19d206ce3e84"></a>
8302<h2 class="memtitle"><span class="permalink"><a href="#aec7cf8e3927ee7d24f8b19d206ce3e84">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[69/81]</span></h2>
8303
8304<div class="memitem">
8305<div class="memproto">
8306 <table class="memname">
8307 <tr>
8308 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8309 <td>(</td>
8310 <td class="paramtype">QuantizeBatchToSpace&#160;</td>
8311 <td class="paramname"></td><td>)</td>
8312 <td></td>
8313 </tr>
8314 </table>
8315</div><div class="memdoc">
8316
8317<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02421">2421</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8318
8319<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">CompleteLeakyReluNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">CreateStartOfLeakyReluNetwork()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8320<div class="fragment"><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;{</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keyword">class </span>TestBatchToSpaceQuantization : <span class="keyword">public</span> TestLeakyReLuActivationQuantization</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; {</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; : TestLeakyReLuActivationQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160;</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; TestBatchToSpaceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160; : TestLeakyReLuActivationQuantization(options, inputShape, outputShape) {}</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">void</span> VisitBatchToSpaceNdLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keyword">const</span> BatchToSpaceNdDescriptor&amp; batchToSpaceNdDescriptor,</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(batchToSpaceNdDescriptor, name);</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; CheckForwardedQuantizationSettings(layer);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; }</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;</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; <span class="keyword">const</span> TensorShape shape{1U};</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160;</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; IConnectableLayer* activation = <a class="code" href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">CreateStartOfLeakyReluNetwork</a>(network.get(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; BatchToSpaceNdDescriptor descriptor;</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; IConnectableLayer* batchToSpace = network-&gt;AddBatchToSpaceNdLayer(descriptor);</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">CompleteLeakyReluNetwork</a>(network.get(), activation, batchToSpace, <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; TestBatchToSpaceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; TestBatchToSpaceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160;</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; TestBatchToSpaceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; TestBatchToSpaceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;}</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>
8321<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8322<div class="ttc" id="namespacearmnn_xhtml_a120c131df35d78b3a56cb0f07decaf35"><div class="ttname"><a href="namespacearmnn.xhtml#a120c131df35d78b3a56cb0f07decaf35">armnn::CreateStartOfLeakyReluNetwork</a></div><div class="ttdeci">IConnectableLayer * CreateStartOfLeakyReluNetwork(INetwork *network, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01583">QuantizerTest.cpp:1583</a></div></div>
8323<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8324<div class="ttc" id="namespacearmnn_xhtml_a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><div class="ttname"><a href="namespacearmnn.xhtml#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">armnn::CompleteLeakyReluNetwork</a></div><div class="ttdeci">void CompleteLeakyReluNetwork(INetwork *network, IConnectableLayer *activation, IConnectableLayer *layerUnderTest, const TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01604">QuantizerTest.cpp:1604</a></div></div>
8325<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8326<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8327</div><!-- fragment -->
8328</div>
8329</div>
8330<a id="a733ef16d4eaaf8cce338320fa042f526"></a>
8331<h2 class="memtitle"><span class="permalink"><a href="#a733ef16d4eaaf8cce338320fa042f526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[70/81]</span></h2>
8332
8333<div class="memitem">
8334<div class="memproto">
8335 <table class="memname">
8336 <tr>
8337 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8338 <td>(</td>
8339 <td class="paramtype">QuantizePrelu&#160;</td>
8340 <td class="paramname"></td><td>)</td>
8341 <td></td>
8342 </tr>
8343 </table>
8344</div><div class="memdoc">
8345
8346<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02476">2476</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8347
8348<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8349<div class="fragment"><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;{</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keyword">class </span>TestPreluQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; {</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; TestPreluQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; , m_AlphaShape(alphaShape)</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; {}</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; TestPreluQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape,</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; , m_AlphaShape(alphaShape)</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; {}</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160;</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160;</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160; <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>)</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; {</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; <span class="keywordflow">case</span> 0: <span class="comment">// Input</span></div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; BOOST_TEST(m_InputShape == info.GetShape());</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <span class="keywordflow">case</span> 1: <span class="comment">// Alpha</span></div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; BOOST_TEST(m_AlphaShape == info.GetShape());</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Invalid layer binding id for PReLU layer&quot;</span>);</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; <span class="comment">// Based off current default [-15.0f, 15.0f]</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QASymmS8</span></div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; }</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; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(<span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetTensorInfo();</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; BOOST_TEST(m_OutputShape == info.GetShape());</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;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; <span class="keywordtype">void</span> VisitPreluLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(name);</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; <span class="keyword">const</span> TensorInfo&amp; info = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; TestQuantizationParams(info,</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 }, <span class="comment">// QASymmU8</span></div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0}, <span class="comment">// QAsymmS8</span></div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0}, <span class="comment">// QSymmS8</span></div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 }); <span class="comment">// QSymmS16</span></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;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; TensorShape m_AlphaShape;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; };</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160;</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160;</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 4, 1, 2 };</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <span class="keyword">const</span> TensorShape alphaShape{ 5, 4, 3, 1 };</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 5, 4, 3, 2 };</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; TensorInfo inputInfo(inputShape, DataType::Float32);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; TensorInfo alphaInfo(alphaShape, DataType::Float32);</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; TensorInfo outputInfo(outputShape, DataType::Float32);</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160;</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; <span class="comment">// Add the input layers</span></div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; IConnectableLayer* alpha = network-&gt;AddInputLayer(1);</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; <span class="comment">// Add the layer under test</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; IConnectableLayer* prelu = network-&gt;AddPreluLayer(<span class="stringliteral">&quot;prelu&quot;</span>);</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; <span class="comment">// Add the output layers</span></div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; input-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(0));</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; alpha-&gt;GetOutputSlot(0).Connect(prelu-&gt;GetInputSlot(1));</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; prelu-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160;</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="comment">// Set tensor info</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(inputInfo);</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; alpha-&gt;GetOutputSlot(0).SetTensorInfo(alphaInfo);</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; prelu-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160;</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; TestPreluQuantization validatorQAsymmU8(inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; TestPreluQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; TestPreluQuantization validatorQSymmS8(qSymmS8Options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160;</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160; TestPreluQuantization validatorQSymmS16(qSymmS16options, inputShape, alphaShape, outputShape);</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8350<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8351<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>
8352<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00171">Types.hpp:171</a></div></div>
8353<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8354<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8355<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8356<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8357<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8358<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8359</div><!-- fragment -->
8360</div>
8361</div>
8362<a id="a5e66fe270ca921faeecd26735192d08b"></a>
8363<h2 class="memtitle"><span class="permalink"><a href="#a5e66fe270ca921faeecd26735192d08b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[71/81]</span></h2>
8364
8365<div class="memitem">
8366<div class="memproto">
8367 <table class="memname">
8368 <tr>
8369 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8370 <td>(</td>
8371 <td class="paramtype">QuantizeTransposeConvolution2d&#160;</td>
8372 <td class="paramname"></td><td>)</td>
8373 <td></td>
8374 </tr>
8375 </table>
8376</div><div class="memdoc">
8377
8378<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02677">2677</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8379
8380<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>.</p>
8381<div class="fragment"><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160;{</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; <a class="code" href="namespacearmnn.xhtml#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.xhtml#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02597">QuantizerTest.cpp:2597</a></div></div>
8382</div><!-- fragment -->
8383</div>
8384</div>
8385<a id="aec82007c45313f59d24b304e35b3db6c"></a>
8386<h2 class="memtitle"><span class="permalink"><a href="#aec82007c45313f59d24b304e35b3db6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[72/81]</span></h2>
8387
8388<div class="memitem">
8389<div class="memproto">
8390 <table class="memname">
8391 <tr>
8392 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8393 <td>(</td>
8394 <td class="paramtype">QuantizeTransposeConvolution2dWithBiases&#160;</td>
8395 <td class="paramname"></td><td>)</td>
8396 <td></td>
8397 </tr>
8398 </table>
8399</div><div class="memdoc">
8400
8401<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02682">2682</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8402
8403<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>.</p>
8404<div class="fragment"><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160;{</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; <a class="code" href="namespacearmnn.xhtml#afa7a0a639e2772ff2ced67d77be810c0">TestQuantizeTransposeConvolution2d</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_afa7a0a639e2772ff2ced67d77be810c0"><div class="ttname"><a href="namespacearmnn.xhtml#afa7a0a639e2772ff2ced67d77be810c0">armnn::TestQuantizeTransposeConvolution2d</a></div><div class="ttdeci">void TestQuantizeTransposeConvolution2d(bool useBiases)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02597">QuantizerTest.cpp:2597</a></div></div>
8405</div><!-- fragment -->
8406</div>
8407</div>
8408<a id="a77cba79eef903eb3d758b4edbcc626ef"></a>
8409<h2 class="memtitle"><span class="permalink"><a href="#a77cba79eef903eb3d758b4edbcc626ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[73/81]</span></h2>
8410
8411<div class="memitem">
8412<div class="memproto">
8413 <table class="memname">
8414 <tr>
8415 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8416 <td>(</td>
8417 <td class="paramtype">QuantizeStack&#160;</td>
8418 <td class="paramname"></td><td>)</td>
8419 <td></td>
8420 </tr>
8421 </table>
8422</div><div class="memdoc">
8423
8424<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02687">2687</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8425
8426<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8427<div class="fragment"><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160;{</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; <span class="keyword">class </span>TestStackQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; {</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; TestStackQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestStackQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160;</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; <span class="keywordtype">void</span> VisitInputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</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"> 2707</span>&#160; <span class="keywordtype">void</span> VisitOutputLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160; <a class="code" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> <span class="keywordtype">id</span>,</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(layer, <span class="keywordtype">id</span>, name);</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; }</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">void</span> VisitStackLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keyword">const</span> StackDescriptor&amp; descriptor,</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160; TensorInfo outputInfo = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>&#160;</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; TestQuantizationParams(outputInfo,</div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 },</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; { 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0},</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160; { 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 });</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160; }</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>&#160; };</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160;</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; <span class="keyword">const</span> TensorShape inputShape{ 3, 4, 5 };</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; <span class="keyword">const</span> TensorShape outputShape{ 3, 4, 2, 5 };</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160;</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160; StackDescriptor descriptor(2, 2, inputShape);</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; IConnectableLayer* stackLayer = network-&gt;AddStackLayer(descriptor);</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160;</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(0);</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; input0-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160; input1-&gt;GetOutputSlot(0).Connect(stackLayer-&gt;GetInputSlot(1));</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; stackLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; TestStackQuantization validatorQAsymmU8(inputShape, outputShape);</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160;</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; TestStackQuantization validatorQAsymmS8(qAsymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160;</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; TestStackQuantization validatorQSymmS8(qSymmS8Options, inputShape, inputShape);</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>&#160; TestStackQuantization validatorQSymmS16(qSymmS16options, inputShape, outputShape);</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8428<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8429<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>
8430<div class="ttc" id="namespacearmnn_xhtml_ab8cf8f9fb6792e654c2d8d8382f6f01b"><div class="ttname"><a href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">armnn::LayerBindingId</a></div><div class="ttdeci">int LayerBindingId</div><div class="ttdoc">Type of identifiers for bindable layers (inputs, outputs). </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00171">Types.hpp:171</a></div></div>
8431<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8432<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8433<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8434<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8435<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8436</div><!-- fragment -->
8437</div>
8438</div>
8439<a id="a46f313720b601ca97a9c2a5158814bff"></a>
8440<h2 class="memtitle"><span class="permalink"><a href="#a46f313720b601ca97a9c2a5158814bff">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[74/81]</span></h2>
8441
8442<div class="memitem">
8443<div class="memproto">
8444 <table class="memname">
8445 <tr>
8446 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8447 <td>(</td>
8448 <td class="paramtype">QuantizeSlice&#160;</td>
8449 <td class="paramname"></td><td>)</td>
8450 <td></td>
8451 </tr>
8452 </table>
8453</div><div class="memdoc">
8454
8455<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02766">2766</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8456
8457<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8458<div class="fragment"><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">class </span>TestSliceQuantization : <span class="keyword">public</span> TestQuantization</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; <span class="keyword">public</span>:</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; TestSliceQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160; : TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; {}</div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160;</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; TestSliceQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160; : TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; {}</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160;</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> VisitSliceLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; <span class="keyword">const</span> SliceDescriptor&amp; desc,</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)</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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; <span class="keyword">const</span> TensorInfo&amp; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = layer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmU8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">g_AsymmU8QuantizationBase</a>, 128 };</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qAsymmS8Params{ 30.0f / <a class="code" href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">g_AsymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS8Params { 15.0f / <a class="code" href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">g_SymmS8QuantizationBase</a>, 0 };</div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qSymmS16Params{ 15.0f / <a class="code" href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">g_SymmS16QuantizationBase</a>, 0 };</div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160;</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160; TestQuantizationParams(info, qAsymmU8Params, qAsymmS8Params, qSymmS8Params, qSymmS16Params);</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; };</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160;</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; TensorInfo info(shape, DataType::Float32);</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; IConnectableLayer* sliceLayer = network-&gt;AddSliceLayer(SliceDescriptor());</div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0);</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; inputLayer-&gt;GetOutputSlot(0).Connect(sliceLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; sliceLayer-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160;</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; sliceLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160;</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; TestSliceQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="comment">// test QASymmS8 quantization</span></div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160; TestSliceQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160; TestSliceQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160;</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160; TestSliceQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19994153bdbd7710f0af3973403bc4cc"><div class="ttname"><a href="namespacearmnn.xhtml#a19994153bdbd7710f0af3973403bc4cc">armnn::g_AsymmU8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmU8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00031">QuantizerTest.cpp:31</a></div></div>
8459<div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
8460<div class="ttc" id="namespacearmnn_xhtml_acd7f8820d124166a38c95bc8ad38811b"><div class="ttname"><a href="namespacearmnn.xhtml#acd7f8820d124166a38c95bc8ad38811b">armnn::g_SymmS8QuantizationBase</a></div><div class="ttdeci">const float g_SymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00034">QuantizerTest.cpp:34</a></div></div>
8461<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>
8462<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8463<div class="ttc" id="namespacearmnn_xhtml_a1465480794787d2278d3f0d2e6d887b4"><div class="ttname"><a href="namespacearmnn.xhtml#a1465480794787d2278d3f0d2e6d887b4">armnn::g_SymmS16QuantizationBase</a></div><div class="ttdeci">const float g_SymmS16QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00035">QuantizerTest.cpp:35</a></div></div>
8464<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
8465<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8466<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
8467<div class="ttc" id="namespacearmnn_xhtml_a09bdfaa922d72ce0d9ec014dfa8f8c95"><div class="ttname"><a href="namespacearmnn.xhtml#a09bdfaa922d72ce0d9ec014dfa8f8c95">armnn::g_AsymmS8QuantizationBase</a></div><div class="ttdeci">const float g_AsymmS8QuantizationBase</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00033">QuantizerTest.cpp:33</a></div></div>
8468</div><!-- fragment -->
8469</div>
8470</div>
8471<a id="a728153b62fa66e6ed1243e09144bfe8c"></a>
8472<h2 class="memtitle"><span class="permalink"><a href="#a728153b62fa66e6ed1243e09144bfe8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[75/81]</span></h2>
8473
8474<div class="memitem">
8475<div class="memproto">
8476 <table class="memname">
8477 <tr>
8478 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8479 <td>(</td>
8480 <td class="paramtype">QuantizeInf&#160;</td>
8481 <td class="paramname"></td><td>)</td>
8482 <td></td>
8483 </tr>
8484 </table>
8485</div><div class="memdoc">
8486
8487<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02851">2851</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8488
8489<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02836">SetupQuantize()</a>.</p>
8490<div class="fragment"><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;{</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.xhtml#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(std::numeric_limits&lt;float&gt;::infinity())[0], 255);</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.xhtml#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02836">QuantizerTest.cpp:2836</a></div></div>
8491</div><!-- fragment -->
8492</div>
8493</div>
8494<a id="a898305dc4cdb78a5fbed481250f6cd35"></a>
8495<h2 class="memtitle"><span class="permalink"><a href="#a898305dc4cdb78a5fbed481250f6cd35">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[76/81]</span></h2>
8496
8497<div class="memitem">
8498<div class="memproto">
8499 <table class="memname">
8500 <tr>
8501 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8502 <td>(</td>
8503 <td class="paramtype">QuantizeNegativeInf&#160;</td>
8504 <td class="paramname"></td><td>)</td>
8505 <td></td>
8506 </tr>
8507 </table>
8508</div><div class="memdoc">
8509
8510<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02856">2856</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8511
8512<p class="reference">References <a class="el" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a0c262ba6f6c189a2d092d127c1b7627b">BOOST_CHECK()</a>, <a class="el" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">GetDataTypeName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02836">SetupQuantize()</a>.</p>
8513<div class="fragment"><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; BOOST_CHECK_EQUAL(<a class="code" href="namespacearmnn.xhtml#a52cbff9d344ba4a1fe01d4da2c1f7ba2">SetupQuantize</a>(-1 * std::numeric_limits&lt;float&gt;::infinity())[0], 0);</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a52cbff9d344ba4a1fe01d4da2c1f7ba2"><div class="ttname"><a href="namespacearmnn.xhtml#a52cbff9d344ba4a1fe01d4da2c1f7ba2">armnn::SetupQuantize</a></div><div class="ttdeci">std::vector&lt; uint8_t &gt; SetupQuantize(float value)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02836">QuantizerTest.cpp:2836</a></div></div>
8514</div><!-- fragment -->
8515</div>
8516</div>
8517<a id="a94eb3bdf0e1c8c748c2e29dce048ace4"></a>
8518<h2 class="memtitle"><span class="permalink"><a href="#a94eb3bdf0e1c8c748c2e29dce048ace4">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[77/81]</span></h2>
8519
8520<div class="memitem">
8521<div class="memproto">
8522 <table class="memname">
8523 <tr>
8524 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8525 <td>(</td>
8526 <td class="paramtype">PreserveTypeFloat32&#160;</td>
8527 <td class="paramname"></td><td>)</td>
8528 <td></td>
8529 </tr>
8530 </table>
8531</div><div class="memdoc">
8532
8533<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02956">2956</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8534
8535<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">PreserveTypeTestImpl()</a>.</p>
8536<div class="fragment"><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;{</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::Float32);</div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02926">QuantizerTest.cpp:2926</a></div></div>
8537</div><!-- fragment -->
8538</div>
8539</div>
8540<a id="ab242670b85e047e79bb297cdb192cc93"></a>
8541<h2 class="memtitle"><span class="permalink"><a href="#ab242670b85e047e79bb297cdb192cc93">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[78/81]</span></h2>
8542
8543<div class="memitem">
8544<div class="memproto">
8545 <table class="memname">
8546 <tr>
8547 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8548 <td>(</td>
8549 <td class="paramtype">PreserveTypeQAsymmU8&#160;</td>
8550 <td class="paramname"></td><td>)</td>
8551 <td></td>
8552 </tr>
8553 </table>
8554</div><div class="memdoc">
8555
8556<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02961">2961</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8557
8558<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
8559<div class="fragment"><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160;{</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QAsymmU8);</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02926">QuantizerTest.cpp:2926</a></div></div>
8560</div><!-- fragment -->
8561</div>
8562</div>
8563<a id="a061891029598224370aae4cd18b78406"></a>
8564<h2 class="memtitle"><span class="permalink"><a href="#a061891029598224370aae4cd18b78406">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[79/81]</span></h2>
8565
8566<div class="memitem">
8567<div class="memproto">
8568 <table class="memname">
8569 <tr>
8570 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8571 <td>(</td>
8572 <td class="paramtype">PreserveTypeQsymm8&#160;</td>
8573 <td class="paramname"></td><td>)</td>
8574 <td></td>
8575 </tr>
8576 </table>
8577</div><div class="memdoc">
8578
8579<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02966">2966</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8580
8581<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>.</p>
8582<div class="fragment"><div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>&#160;{</div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS8);</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02926">QuantizerTest.cpp:2926</a></div></div>
8583</div><!-- fragment -->
8584</div>
8585</div>
8586<a id="a4d4386cbb19dbc551e423992ecdd0d61"></a>
8587<h2 class="memtitle"><span class="permalink"><a href="#a4d4386cbb19dbc551e423992ecdd0d61">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[80/81]</span></h2>
8588
8589<div class="memitem">
8590<div class="memproto">
8591 <table class="memname">
8592 <tr>
8593 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8594 <td>(</td>
8595 <td class="paramtype">PreserveTypeQsymm16&#160;</td>
8596 <td class="paramname"></td><td>)</td>
8597 <td></td>
8598 </tr>
8599 </table>
8600</div><div class="memdoc">
8601
8602<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02971">2971</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8603
8604<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">PreserveTypeTestImpl()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
8605<div class="fragment"><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;{</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; <a class="code" href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">PreserveTypeTestImpl</a>(DataType::QSymmS16);</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abe34cf42d7c8515ecd15d11f4aeb399c"><div class="ttname"><a href="namespacearmnn.xhtml#abe34cf42d7c8515ecd15d11f4aeb399c">armnn::PreserveTypeTestImpl</a></div><div class="ttdeci">void PreserveTypeTestImpl(const DataType &amp;dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l02926">QuantizerTest.cpp:2926</a></div></div>
8606</div><!-- fragment -->
8607</div>
8608</div>
8609<a id="a8c09fbb75d2c2dea48926a540fc5cce9"></a>
8610<h2 class="memtitle"><span class="permalink"><a href="#a8c09fbb75d2c2dea48926a540fc5cce9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[81/81]</span></h2>
8611
8612<div class="memitem">
8613<div class="memproto">
8614 <table class="memname">
8615 <tr>
8616 <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
8617 <td>(</td>
8618 <td class="paramtype">TestConnectionPreservationAfterDynamicQuant&#160;</td>
8619 <td class="paramname"></td><td>)</td>
8620 <td></td>
8621 </tr>
8622 </table>
8623</div><div class="memdoc">
8624
8625<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02976">2976</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
8626
8627<p class="reference">References <a class="el" href="_profiler_tests_8cpp.xhtml#af7f71af5c6c124222dd1c42c5df892f4">BOOST_AUTO_TEST_SUITE_END()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_input_slot.xhtml#a81fbf6103761e55061b62ba989b00f10">IInputSlot::GetConnection()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#afb5e65c770f6cee222db8af7581541a6">IConnectableLayer::GetGuid()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00335">GetInputTensorInfo()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#afcc1c3a20bd2860e0ddd21674389246f">IConnectableLayer::GetName()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ad0c3555b126975ad6b3e250fe2a59534">IOutputSlot::GetOwningLayerGuid()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
8628<div class="fragment"><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160;{</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; <span class="keyword">class </span>TestConnectionPreservation : <span class="keyword">public</span> LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;</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"> 2980</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; TestConnectionPreservation(<span class="keyword">const</span> Graph&amp; graph)</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; : LayerVisitorBase&lt;VisitorNoThrowPolicy&gt;()</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160; , m_Graph(graph)</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;</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160; <span class="keywordtype">void</span> VisitAdditionLayer(<span class="keyword">const</span> IConnectableLayer* layer, <span class="keyword">const</span> <span class="keywordtype">char</span>*)<span class="keyword"> override</span></div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(0).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; CheckLayerName(layer-&gt;GetInputSlot(1).GetConnection()-&gt;GetOwningLayerGuid(), <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; }</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160;</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; <span class="keywordtype">void</span> CheckLayerName(<a class="code" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a> guid, std::string expectedName)</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="keywordtype">bool</span> guidFound = <span class="keyword">false</span>;</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; <span class="keywordflow">for</span> (Layer* layer : m_Graph)</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; <span class="keywordflow">if</span> (layer-&gt;GetGuid() == guid)</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; {</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160; BOOST_CHECK_EQUAL(layer-&gt;GetName(), expectedName.c_str());</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; guidFound = <span class="keyword">true</span>;</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160; }</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">if</span> (!guidFound)</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; {</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160; BOOST_FAIL(<span class="stringliteral">&quot;No layer matching the GUID was found&quot;</span>);</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; }</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; }</div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160;</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; Graph m_Graph;</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; };</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>&#160;</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0,<span class="stringliteral">&quot;inputLayer1&quot;</span>);</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <a class="code" href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a> ReLUDesc;</div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; ReLUDesc.<a class="code" href="structarmnn_1_1_activation_descriptor.xhtml#af10fa7883e3579950f477bee92a64844">m_Function</a> = ActivationFunction::ReLu;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; IConnectableLayer* reLULayer1 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU1&quot;</span>);</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160; IConnectableLayer* reLULayer2 = network-&gt;AddActivationLayer(ReLUDesc, <span class="stringliteral">&quot;reLU2&quot;</span>);</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; IConnectableLayer* addLayer1 = network-&gt;AddAdditionLayer(<span class="stringliteral">&quot;addLayer1&quot;</span>);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; IConnectableLayer* outputLayer = network-&gt;AddOutputLayer(0,<span class="stringliteral">&quot;outPutLayer1&quot;</span>);</div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(reLULayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(reLULayer2-&gt;GetInputSlot(0));</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; reLULayer1-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(0));</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160; reLULayer2-&gt;GetOutputSlot(0).Connect(addLayer1-&gt;GetInputSlot(1));</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; addLayer1-&gt;GetOutputSlot(0).Connect(outputLayer-&gt;GetInputSlot(0));</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160;</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; reLULayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; reLULayer2-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160; addLayer1-&gt;GetOutputSlot(0).SetTensorInfo(TensorInfo(TensorShape({1, 2, 2, 1}), DataType::Float32));</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160;</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; TestConnectionPreservation visitor1(boost::polymorphic_downcast&lt;const Network*&gt;(network.get())-&gt;GetGraph());</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(network.get(), visitor1);</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160;</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160; <a class="code" href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a> quantizer = <a class="code" href="classarmnn_1_1_i_network_quantizer.xhtml#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a>(network.get());</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160;</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> tensorInfo = <a class="code" href="namespacearmnn.xhtml#ae52296dff1f4879854f320d59f92574e">GetInputTensorInfo</a>(boost::polymorphic_downcast&lt;const Network*&gt;(network.get()));</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160; std::vector&lt;float&gt; inputData({0, 2, 0, 4});</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>&#160; <a class="code" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> inputTensor(tensorInfo, inputData.data());</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; <a class="code" href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">InputTensors</a> inputTensors;</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; inputTensors.push_back(std::make_pair(0, inputTensor));</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; quantizer-&gt;Refine(inputTensors);</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160;</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantNetwork = quantizer-&gt;ExportNetwork();</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; TestConnectionPreservation visitor2(boost::polymorphic_downcast&lt;const Network*&gt;(quantNetwork.get())-&gt;GetGraph());</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantNetwork.get(), visitor2);</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160;}</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#l00053">Tensor.hpp:53</a></div></div>
8629<div class="ttc" id="namespacearmnn_xhtml_a41119e261eec9343888d2ceab1e4999a"><div class="ttname"><a href="namespacearmnn.xhtml#a41119e261eec9343888d2ceab1e4999a">armnn::INetworkQuantizerPtr</a></div><div class="ttdeci">std::unique_ptr&lt; class INetworkQuantizer, void(*)(INetworkQuantizer *quantizer)&gt; INetworkQuantizerPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_quantizer_8hpp_source.xhtml#l00029">INetworkQuantizer.hpp:29</a></div></div>
8630<div class="ttc" id="namespacearmnn_xhtml_aa01bce88f89975a5a031db4cc8861527"><div class="ttname"><a href="namespacearmnn.xhtml#aa01bce88f89975a5a031db4cc8861527">armnn::InputTensors</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; LayerBindingId, class ConstTensor &gt; &gt; InputTensors</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00225">Tensor.hpp:225</a></div></div>
8631<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
8632<div class="ttc" id="classarmnn_1_1_const_tensor_xhtml"><div class="ttname"><a href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a></div><div class="ttdoc">A tensor defined by a TensorInfo (shape and data type) and an immutable backing store. </div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00199">Tensor.hpp:199</a></div></div>
8633<div class="ttc" id="structarmnn_1_1_activation_descriptor_xhtml"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.xhtml">armnn::ActivationDescriptor</a></div><div class="ttdoc">An ActivationDescriptor for the ActivationLayer. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00020">Descriptors.hpp:20</a></div></div>
8634<div class="ttc" id="namespacearmnn_xhtml_afad4088a9a058114ee5f87246f87bf49"><div class="ttname"><a href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">armnn::LayerGuid</a></div><div class="ttdeci">profiling::ProfilingGuid LayerGuid</div><div class="ttdoc">Define LayerGuid type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00236">Types.hpp:236</a></div></div>
8635<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
8636<div class="ttc" id="namespacearmnn_xhtml_ae52296dff1f4879854f320d59f92574e"><div class="ttname"><a href="namespacearmnn.xhtml#ae52296dff1f4879854f320d59f92574e">armnn::GetInputTensorInfo</a></div><div class="ttdeci">TensorInfo GetInputTensorInfo(const Network *network)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00335">QuantizerTest.cpp:335</a></div></div>
8637<div class="ttc" id="structarmnn_1_1_activation_descriptor_xhtml_af10fa7883e3579950f477bee92a64844"><div class="ttname"><a href="structarmnn_1_1_activation_descriptor.xhtml#af10fa7883e3579950f477bee92a64844">armnn::ActivationDescriptor::m_Function</a></div><div class="ttdeci">ActivationFunction m_Function</div><div class="ttdoc">The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00035">Descriptors.hpp:35</a></div></div>
8638<div class="ttc" id="classarmnn_1_1_i_network_quantizer_xhtml_a3a4d01d9351c02a703740290f226441f"><div class="ttname"><a href="classarmnn_1_1_i_network_quantizer.xhtml#a3a4d01d9351c02a703740290f226441f">armnn::INetworkQuantizer::Create</a></div><div class="ttdeci">static INetworkQuantizerPtr Create(INetwork *inputNetwork, const QuantizerOptions &amp;options=QuantizerOptions())</div><div class="ttdoc">Create Quantizer object wrapped in unique_ptr. </div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_8cpp_source.xhtml#l00040">NetworkQuantizer.cpp:40</a></div></div>
8639</div><!-- fragment -->
8640</div>
8641</div>
8642<a id="abe311824d11bad4e6f93c8f94a721052"></a>
8643<h2 class="memtitle"><span class="permalink"><a href="#abe311824d11bad4e6f93c8f94a721052">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[1/2]</span></h2>
8644
8645<div class="memitem">
8646<div class="memproto">
8647 <table class="memname">
8648 <tr>
8649 <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
8650 <td>(</td>
8651 <td class="paramtype">std::ostream &amp;&#160;</td>
8652 <td class="paramname"><em>ostr</em>, </td>
8653 </tr>
8654 <tr>
8655 <td class="paramkey"></td>
8656 <td></td>
8657 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
8658 <td class="paramname"><em>right</em>&#160;</td>
8659 </tr>
8660 <tr>
8661 <td></td>
8662 <td>)</td>
8663 <td></td><td></td>
8664 </tr>
8665 </table>
8666</div><div class="memdoc">
8667
8668<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.xhtml#l00012">12</a> of file <a class="el" href="_tensor_test_8cpp_source.xhtml">TensorTest.cpp</a>.</p>
8669
8670<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>.</p>
8671<div class="fragment"><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; ostr &lt;&lt; <span class="stringliteral">&quot;TensorInfo[ &quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; &lt;&lt; right.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[3]</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</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#l00088">Tensor.hpp:88</a></div></div>
8672<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00092">Tensor.hpp:92</a></div></div>
8673</div><!-- fragment -->
8674</div>
8675</div>
8676<a id="af676ec7e9534bd6e6ac3072a2c0403f4"></a>
8677<h2 class="memtitle"><span class="permalink"><a href="#af676ec7e9534bd6e6ac3072a2c0403f4">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[2/2]</span></h2>
8678
8679<div class="memitem">
8680<div class="memproto">
8681 <table class="memname">
8682 <tr>
8683 <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
8684 <td>(</td>
8685 <td class="paramtype">std::ostream &amp;&#160;</td>
8686 <td class="paramname"><em>ostr</em>, </td>
8687 </tr>
8688 <tr>
8689 <td class="paramkey"></td>
8690 <td></td>
8691 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
8692 <td class="paramname"><em>shape</em>&#160;</td>
8693 </tr>
8694 <tr>
8695 <td></td>
8696 <td>)</td>
8697 <td></td><td></td>
8698 </tr>
8699 </table>
8700</div><div class="memdoc">
8701
8702<p class="definition">Definition at line <a class="el" href="_tensor_test_8cpp_source.xhtml#l00024">24</a> of file <a class="el" href="_tensor_test_8cpp_source.xhtml">TensorTest.cpp</a>.</p>
8703
8704<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>.</p>
8705<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ostr &lt;&lt; <span class="stringliteral">&quot;TensorShape[ &quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &lt;&lt; shape.<a class="code" href="classarmnn_1_1_tensor_shape.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>() &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &lt;&lt; shape[0] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &lt;&lt; shape[1] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &lt;&lt; shape[2] &lt;&lt; <span class="stringliteral">&quot;,&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; &lt;&lt; shape[3]</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; &lt;&lt; <span class="stringliteral">&quot; ]&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ostr;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</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="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00043">Tensor.hpp:43</a></div></div>
8706</div><!-- fragment -->
8707</div>
8708</div>
8709<a id="a20f74b679d59b52e9fae3bbef8f10ffb"></a>
8710<h2 class="memtitle"><span class="permalink"><a href="#a20f74b679d59b52e9fae3bbef8f10ffb">&#9670;&nbsp;</a></span>CalcLevel()</h2>
8711
8712<div class="memitem">
8713<div class="memproto">
8714 <table class="memname">
8715 <tr>
8716 <td class="memname">int armnn::CalcLevel </td>
8717 <td>(</td>
8718 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
8719 <td class="paramname"><em>eventPtr</em></td><td>)</td>
8720 <td></td>
8721 </tr>
8722 </table>
8723</div><div class="memdoc">
8724
8725<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00235">235</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
8726
8727<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.xhtml#l00067">Event::GetName()</a>, and <a class="el" href="_profiling_event_8cpp_source.xhtml#l00077">Event::GetParentEvent()</a>.</p>
8728
8729<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00381">Profiler::AnalyzeEventsAndWriteResults()</a>.</p>
8730<div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">int</span> level=0;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">while</span> (eventPtr != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; eventPtr = eventPtr-&gt;GetParentEvent();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; level++;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> level;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div></div><!-- fragment -->
8731</div>
8732</div>
8733<a id="ab6ed577caec49def150e231c63af0d12"></a>
8734<h2 class="memtitle"><span class="permalink"><a href="#ab6ed577caec49def150e231c63af0d12">&#9670;&nbsp;</a></span>CalculateEdgeStrategy()</h2>
8735
8736<div class="memitem">
8737<div class="memproto">
8738 <table class="memname">
8739 <tr>
8740 <td class="memname"><a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> armnn::CalculateEdgeStrategy </td>
8741 <td>(</td>
8742 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8743 <td class="paramname"><em>backends</em>, </td>
8744 </tr>
8745 <tr>
8746 <td class="paramkey"></td>
8747 <td></td>
8748 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
8749 <td class="paramname"><em>srcFactoryId</em>, </td>
8750 </tr>
8751 <tr>
8752 <td class="paramkey"></td>
8753 <td></td>
8754 <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
8755 <td class="paramname"><em>layer</em>, </td>
8756 </tr>
8757 <tr>
8758 <td class="paramkey"></td>
8759 <td></td>
8760 <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
8761 <td class="paramname"><em>connectedLayer</em>, </td>
8762 </tr>
8763 <tr>
8764 <td class="paramkey"></td>
8765 <td></td>
8766 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8767 <td class="paramname"><em>registry</em>&#160;</td>
8768 </tr>
8769 <tr>
8770 <td></td>
8771 <td>)</td>
8772 <td></td><td></td>
8773 </tr>
8774 </table>
8775</div><div class="memdoc">
8776
8777<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00747">747</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
8778
8779<p class="reference">References <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>, <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>, <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.xhtml#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
8780
8781<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
8782<div class="fragment"><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="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</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="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="comment">// Legacy API check for backward compatibility</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span> (srcFactoryId == ITensorHandleFactory::LegacyFactoryId || dstPrefs.empty())</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; {</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordflow">if</span> (layer.GetBackendId() != connectedLayer.GetBackendId())</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</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; }</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="comment">// TensorHandleFactory API present, so perform more sophisticated strategies.</span></div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="comment">// Dst Output layers don&#39;t require copy because they use import or map/unmap</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</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="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</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">// Search for direct match in prefs</span></div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</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="keywordflow">if</span> (pref == srcFactoryId)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::DirectCompatibility;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; }</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;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="comment">// Search for export/import options</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; ITensorHandleFactory* srcFactory = registry.GetFactory(srcFactoryId);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;GetExportFlags() != 0)</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="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="comment">// Handles cases when a destPref is not listed in TensorHandleFactoryRegistry</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (!dstFactory) {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</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="keywordflow">if</span> ((dstFactory-&gt;GetImportFlags() &amp; srcFactory-&gt;GetExportFlags()) != 0)</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::ExportToTarget;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; }</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;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// Search for copy options via map/unmap</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (srcFactory-&gt;SupportsMapUnmap())</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; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : dstPrefs)</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(pref);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">if</span> (dstFactory &amp;&amp; dstFactory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">return</span> EdgeStrategy::CopyToTarget;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; }</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; <span class="keywordflow">return</span> EdgeStrategy::Undefined;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;}</div></div><!-- fragment -->
8783</div>
8784</div>
8785<a id="a8d9f52bbb69750456acca06988beabda"></a>
8786<h2 class="memtitle"><span class="permalink"><a href="#a8d9f52bbb69750456acca06988beabda">&#9670;&nbsp;</a></span>CalculateSlotOption()</h2>
8787
8788<div class="memitem">
8789<div class="memproto">
8790 <table class="memname">
8791 <tr>
8792 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOption </td>
8793 <td>(</td>
8794 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8795 <td class="paramname"><em>backends</em>, </td>
8796 </tr>
8797 <tr>
8798 <td class="paramkey"></td>
8799 <td></td>
8800 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
8801 <td class="paramname"><em>outputSlot</em>, </td>
8802 </tr>
8803 <tr>
8804 <td class="paramkey"></td>
8805 <td></td>
8806 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8807 <td class="paramname"><em>registry</em>&#160;</td>
8808 </tr>
8809 <tr>
8810 <td></td>
8811 <td>)</td>
8812 <td></td><td></td>
8813 </tr>
8814 </table>
8815</div><div class="memdoc">
8816
8817<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00638">638</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
8818
8819<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.xhtml#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="_i_backend_internal_8cpp_source.xhtml#l00096">IBackendInternal::GetHandleFactoryPreferences()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_network_8cpp_source.xhtml#l00526">RequiresCopy()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
8820
8821<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
8822<div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;{</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; Layer&amp; layer = outputSlot.GetOwningLayer();</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</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;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="comment">// Connections to Output Layers requires support for map/unmap on the TensorHandle.</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordtype">bool</span> requiresMapUnmap = <span class="keyword">false</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span> (connectedLayer.GetType() == LayerType::Output)</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; requiresMapUnmap = <span class="keyword">true</span>;</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;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; IBackendInternal* srcBackend = frmBackend-&gt;second.get();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">auto</span> srcPrefs = srcBackend-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="comment">// Initialize the scores</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; pref : srcPrefs)</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; <span class="keywordflow">if</span> (requiresMapUnmap) <span class="comment">// Only consider factories that support map/unmap if required</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(pref);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap())</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">// The current tensor handle factory does not support the map/unmap strategy, move to the next one</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</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;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(pref);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; factoryScores[pref] = 0;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</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;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="comment">// Score each handle factory based on how many times it requires copies on the slot connections</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; src : srcPrefs)</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (factoryScores.find(src) == factoryScores.end()) <span class="comment">// Don&#39;t consider excluded factories</span></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; <span class="keywordflow">continue</span>;</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;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</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; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">RequiresCopy</a>(src, dst, registry))</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// Copy avoided, increase the score</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; factoryScores[src]++;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</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; <span class="comment">// Find the lowest score</span></div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordtype">int</span> minScore = std::numeric_limits&lt;int&gt;::max();</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; minScore = std::min(minScore, it.second);</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;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">// Collect factories matching the best(lowest) score</span></div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; std::vector&lt;ITensorHandleFactory::FactoryId&gt; optimalFactories;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it : factoryScores)</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">if</span> (it.second == minScore)</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; optimalFactories.push_back(it.first);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="comment">// For all compatible Factories matching the best score, find the preferred one for the current layer.</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; srcPref : srcPrefs)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; comp : optimalFactories)</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span> (comp == srcPref)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">return</span> comp;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</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; }</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="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5ee4a1cca55f69b31e625c786655ed1a"><div class="ttname"><a href="namespacearmnn.xhtml#a5ee4a1cca55f69b31e625c786655ed1a">armnn::RequiresCopy</a></div><div class="ttdeci">bool RequiresCopy(ITensorHandleFactory::FactoryId src, ITensorHandleFactory::FactoryId dst, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00526">Network.cpp:526</a></div></div>
8823</div><!-- fragment -->
8824</div>
8825</div>
8826<a id="accb1637c58e1523f740025e0d0e7c6dd"></a>
8827<h2 class="memtitle"><span class="permalink"><a href="#accb1637c58e1523f740025e0d0e7c6dd">&#9670;&nbsp;</a></span>CalculateSlotOptionForInput()</h2>
8828
8829<div class="memitem">
8830<div class="memproto">
8831 <table class="memname">
8832 <tr>
8833 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForInput </td>
8834 <td>(</td>
8835 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8836 <td class="paramname"><em>backends</em>, </td>
8837 </tr>
8838 <tr>
8839 <td class="paramkey"></td>
8840 <td></td>
8841 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
8842 <td class="paramname"><em>slot</em>, </td>
8843 </tr>
8844 <tr>
8845 <td class="paramkey"></td>
8846 <td></td>
8847 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8848 <td class="paramname"><em>registry</em>&#160;</td>
8849 </tr>
8850 <tr>
8851 <td></td>
8852 <td>)</td>
8853 <td></td><td></td>
8854 </tr>
8855 </table>
8856</div><div class="memdoc">
8857
8858<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00546">546</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
8859
8860<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.xhtml#l00047">CheckFlag()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.xhtml#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00061">ITensorHandleFactory::GetImportFlags()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00115">OutputSlot::GetOwningLayer()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00058">ITensorHandleFactory::SupportsMapUnmap()</a>.</p>
8861
8862<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
8863<div class="fragment"><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; Layer&amp; layer = slot.GetOwningLayer();</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; BOOST_ASSERT(layer.GetType() == LayerType::Input);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="comment">// Explicitly select the tensorhandle factory for InputLayer because the rules for it are slightly different. It</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// doesn&#39;t matter which backend it is assigned to because they all use the same implementation, which</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// requires Map/Unmap support. This means that, so long as the handle type supports map/unmap semantics, we can</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="comment">// select a factory with maximum compatibility with the layers connected to the InputLayer.</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="comment">// First ensure the from backends can support the TensorHandeAPI</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">auto</span> frmBackend = backends.find(layer.GetBackendId());</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span> (frmBackend == backends.end() ||</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; !frmBackend-&gt;second-&gt;SupportsTensorAllocatorAPI())</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; <span class="keywordflow">return</span> ITensorHandleFactory::LegacyFactoryId;</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;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="comment">// Go through all connections to the output slot and determine the TensorHandleFactory which results in the</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="comment">// fewest copies.</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; std::map&lt;ITensorHandleFactory::FactoryId, int&gt; factoryScores;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordtype">int</span> topScore = 0;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> topChoice = ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : slot.GetConnections())</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</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; <span class="keyword">auto</span> toBackend = backends.find(connectedLayer.GetBackendId());</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; BOOST_ASSERT_MSG(toBackend != backends.end(), <span class="stringliteral">&quot;Backend id not found for the connected layer&quot;</span>);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span> (!toBackend-&gt;second.get()-&gt;SupportsTensorAllocatorAPI())</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="comment">// The destination backend does not support the tensor allocator API, move to the next one</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; }</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">auto</span> dstPrefs = toBackend-&gt;second.get()-&gt;GetHandleFactoryPreferences();</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; dst : dstPrefs)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">// Input layers use the mem copy workload or import, so the selected factory must</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// support either the map/unmap API or Import API</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; ITensorHandleFactory* factory = registry.GetFactory(dst);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (!factory-&gt;SupportsMapUnmap() &amp;&amp;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; !<a class="code" href="namespacearmnn.xhtml#a84f86b4de5adf0b164e811c87051a0ee">CheckFlag</a>(factory-&gt;GetImportFlags(), MemorySource::Malloc)) <span class="comment">// Just support cpu mem imports for now</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// The current tensor handle factory does not support the map/unmap or import</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// strategy, move to the next one</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">continue</span>;</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;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">auto</span> it = factoryScores.find(dst);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (it == factoryScores.end())</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// Add new score to the table</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; factoryScores[dst] = 0;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (topChoice == ITensorHandleFactory::LegacyFactoryId)</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; topChoice = dst;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; }</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="keywordflow">else</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// Increase the score</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; factoryScores[dst]++;</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; <span class="comment">// Track the best option</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (factoryScores[dst] &gt; topScore)</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; topScore = factoryScores[dst];</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; topChoice = dst;</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; }</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; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">return</span> topChoice;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.xhtml#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
8864<div class="ttc" id="namespacearmnn_xhtml_a84f86b4de5adf0b164e811c87051a0ee"><div class="ttname"><a href="namespacearmnn.xhtml#a84f86b4de5adf0b164e811c87051a0ee">armnn::CheckFlag</a></div><div class="ttdeci">bool CheckFlag(MemorySourceFlags flags, MemorySource source)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00047">MemorySources.hpp:47</a></div></div>
8865</div><!-- fragment -->
8866</div>
8867</div>
8868<a id="ab46c7f5f4736d550ab0e5e05a0fff4a9"></a>
8869<h2 class="memtitle"><span class="permalink"><a href="#ab46c7f5f4736d550ab0e5e05a0fff4a9">&#9670;&nbsp;</a></span>CalculateSlotOptionForOutput()</h2>
8870
8871<div class="memitem">
8872<div class="memproto">
8873 <table class="memname">
8874 <tr>
8875 <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForOutput </td>
8876 <td>(</td>
8877 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
8878 <td class="paramname"><em>backends</em>, </td>
8879 </tr>
8880 <tr>
8881 <td class="paramkey"></td>
8882 <td></td>
8883 <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
8884 <td class="paramname"><em>slot</em>, </td>
8885 </tr>
8886 <tr>
8887 <td class="paramkey"></td>
8888 <td></td>
8889 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
8890 <td class="paramname"><em>registry</em>&#160;</td>
8891 </tr>
8892 <tr>
8893 <td></td>
8894 <td>)</td>
8895 <td></td><td></td>
8896 </tr>
8897 </table>
8898</div><div class="memdoc">
8899
8900<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00628">628</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
8901
8902<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00023">ITensorHandleFactory::DeferredFactoryId</a>, and <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>.</p>
8903
8904<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
8905<div class="fragment"><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;{</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(backends, slot, registry);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> ITensorHandleFactory::DeferredFactoryId;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;}</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>
8906</div><!-- fragment -->
8907</div>
8908</div>
8909<a id="a84f86b4de5adf0b164e811c87051a0ee"></a>
8910<h2 class="memtitle"><span class="permalink"><a href="#a84f86b4de5adf0b164e811c87051a0ee">&#9670;&nbsp;</a></span>CheckFlag()</h2>
8911
8912<div class="memitem">
8913<div class="memproto">
8914<table class="mlabels">
8915 <tr>
8916 <td class="mlabels-left">
8917 <table class="memname">
8918 <tr>
8919 <td class="memname">bool armnn::CheckFlag </td>
8920 <td>(</td>
8921 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td>
8922 <td class="paramname"><em>flags</em>, </td>
8923 </tr>
8924 <tr>
8925 <td class="paramkey"></td>
8926 <td></td>
8927 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a>&#160;</td>
8928 <td class="paramname"><em>source</em>&#160;</td>
8929 </tr>
8930 <tr>
8931 <td></td>
8932 <td>)</td>
8933 <td></td><td></td>
8934 </tr>
8935 </table>
8936 </td>
8937 <td class="mlabels-right">
8938<span class="mlabels"><span class="mlabel">inline</span></span> </td>
8939 </tr>
8940</table>
8941</div><div class="memdoc">
8942
8943<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.xhtml#l00047">47</a> of file <a class="el" href="_memory_sources_8hpp_source.xhtml">MemorySources.hpp</a>.</p>
8944
8945<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00546">CalculateSlotOptionForInput()</a>, and <a class="el" href="_loaded_network_8cpp_source.xhtml#l00412">LoadedNetwork::EnqueueWorkload()</a>.</p>
8946<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> (static_cast&lt;MemorySourceFlags&gt;(source) &amp; flags) != 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div></div><!-- fragment -->
8947</div>
8948</div>
8949<a id="a5a38bd982292180692711b0ae296bb34"></a>
8950<h2 class="memtitle"><span class="permalink"><a href="#a5a38bd982292180692711b0ae296bb34">&#9670;&nbsp;</a></span>CheckLayerBindingId()</h2>
8951
8952<div class="memitem">
8953<div class="memproto">
8954 <table class="memname">
8955 <tr>
8956 <td class="memname">void armnn::CheckLayerBindingId </td>
8957 <td>(</td>
8958 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
8959 <td class="paramname"><em>visitorId</em>, </td>
8960 </tr>
8961 <tr>
8962 <td class="paramkey"></td>
8963 <td></td>
8964 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
8965 <td class="paramname"><em>id</em>&#160;</td>
8966 </tr>
8967 <tr>
8968 <td></td>
8969 <td>)</td>
8970 <td></td><td></td>
8971 </tr>
8972 </table>
8973</div><div class="memdoc">
8974
8975<p class="definition">Definition at line <a class="el" href="_test_input_output_layer_visitor_8hpp_source.xhtml#l00013">13</a> of file <a class="el" href="_test_input_output_layer_visitor_8hpp_source.xhtml">TestInputOutputLayerVisitor.hpp</a>.</p>
8976
8977<p class="reference">Referenced by <a class="el" href="_test_input_output_layer_visitor_8hpp_source.xhtml#l00030">TestInputLayerVisitor::VisitInputLayer()</a>, and <a class="el" href="_test_input_output_layer_visitor_8hpp_source.xhtml#l00051">TestOutputLayerVisitor::VisitOutputLayer()</a>.</p>
8978<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; BOOST_CHECK_EQUAL(visitorId, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;}</div></div><!-- fragment -->
8979</div>
8980</div>
8981<a id="af002111f64aee648e3258247075cae36"></a>
8982<h2 class="memtitle"><span class="permalink"><a href="#af002111f64aee648e3258247075cae36">&#9670;&nbsp;</a></span>CheckScaleSetOnQuantizedType()</h2>
8983
8984<div class="memitem">
8985<div class="memproto">
8986 <table class="memname">
8987 <tr>
8988 <td class="memname">bool armnn::CheckScaleSetOnQuantizedType </td>
8989 <td>(</td>
8990 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
8991 <td class="paramname"><em>layer</em>, </td>
8992 </tr>
8993 <tr>
8994 <td class="paramkey"></td>
8995 <td></td>
8996 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
8997 <td class="paramname"><em>errMessages</em>&#160;</td>
8998 </tr>
8999 <tr>
9000 <td></td>
9001 <td>)</td>
9002 <td></td><td></td>
9003 </tr>
9004 </table>
9005</div><div class="memdoc">
9006
9007<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00114">114</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
9008
9009<p class="reference">References <a class="el" href="_logging_8hpp_source.xhtml#l00163">ARMNN_LOG</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_internal_types_8cpp_source.xhtml#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="_network_8cpp_source.xhtml#l00075">ReportError()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00275">TensorInfo::SetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00259">TensorInfo::SetQuantizationScale()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00058">OutputSlot::SetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, and <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
9010
9011<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>.</p>
9012<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">bool</span> noErrors = <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = layer-&gt;GetNumOutputSlots();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputs; i++) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(i);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = outputSlot.GetTensorInfo();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (DataType::QAsymmU8 == info.GetDataType()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (0.f == info.GetQuantizationScale()) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; noErrors = <span class="keyword">false</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;output &quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot; of layer &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; layer-&gt;GetNameStr() &lt;&lt; <span class="stringliteral">&quot;) is of type&quot;</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; &lt;&lt; <span class="stringliteral">&quot; Quantized 8 bit but its scale parameter has not been set&quot;</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(ss.str(), errMessages);</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; <span class="comment">// Softmax under QuantisedAsymm8 must always be scale (1.0f/256.0f) and offset 0</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> ((info.GetQuantizationScale() != (1.0f / 256.0f) ||</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; info.GetQuantizationOffset() != 0) &amp;&amp;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; layer-&gt;GetType() == <a class="code" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a>)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Quantization parameters for Softmax layer (Scale: &quot;</span> &lt;&lt;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; info.GetQuantizationScale() &lt;&lt; <span class="stringliteral">&quot; and Offset: &quot;</span> &lt;&lt; info.GetQuantizationOffset() &lt;&lt;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="stringliteral">&quot;) are incorrect and have been updated to Scale: 0.00390625 and Offset: 0&quot;</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; ss.str();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; info.SetQuantizationScale((1.0f /256.0f));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; info.SetQuantizationOffset(0);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; outputSlot.SetTensorInfo(info);</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; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> noErrors;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00075">Network.cpp:75</a></div></div>
9013<div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00163">Logging.hpp:163</a></div></div>
9014<div class="ttc" id="namespacearmnn_xhtml_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.xhtml#l00013">InternalTypes.cpp:13</a></div></div>
9015<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a></div></div>
9016<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
9017</div><!-- fragment -->
9018</div>
9019</div>
9020<a id="acea2d8c53b441e24b6d60b090fda37c9"></a>
9021<h2 class="memtitle"><span class="permalink"><a href="#acea2d8c53b441e24b6d60b090fda37c9">&#9670;&nbsp;</a></span>CheckSupportRule()</h2>
9022
9023<div class="memitem">
9024<div class="memproto">
9025 <table class="memname">
9026 <tr>
9027 <td class="memname">bool armnn::CheckSupportRule </td>
9028 <td>(</td>
9029 <td class="paramtype">F&#160;</td>
9030 <td class="paramname"><em>rule</em>, </td>
9031 </tr>
9032 <tr>
9033 <td class="paramkey"></td>
9034 <td></td>
9035 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
9036 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
9037 </tr>
9038 <tr>
9039 <td class="paramkey"></td>
9040 <td></td>
9041 <td class="paramtype">const char *&#160;</td>
9042 <td class="paramname"><em>reason</em>&#160;</td>
9043 </tr>
9044 <tr>
9045 <td></td>
9046 <td>)</td>
9047 <td></td><td></td>
9048 </tr>
9049 </table>
9050</div><div class="memdoc">
9051
9052<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00037">37</a> of file <a class="el" href="_layer_support_rules_8hpp_source.xhtml">LayerSupportRules.hpp</a>.</p>
9053
9054<p class="reference">References <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
9055
9056<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00073">RefLayerSupport::IsActivationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00141">RefLayerSupport::IsAdditionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00178">RefLayerSupport::IsArgMinMaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00203">RefLayerSupport::IsBatchNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00249">RefLayerSupport::IsBatchToSpaceNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00298">RefLayerSupport::IsComparisonSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00328">RefLayerSupport::IsConcatSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00361">RefLayerSupport::IsConstantSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00419">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00492">RefLayerSupport::IsDebugSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00522">RefLayerSupport::IsDepthToSpaceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00551">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00624">RefLayerSupport::IsDequantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00662">RefLayerSupport::IsDetectionPostProcessSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00703">RefLayerSupport::IsDivisionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00739">RefLayerSupport::IsElementwiseUnarySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00785">RefLayerSupport::IsFakeQuantizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00803">RefLayerSupport::IsFloorSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00827">RefLayerSupport::IsFullyConnectedSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00909">RefLayerSupport::IsGatherSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00957">RefLayerSupport::IsInstanceNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00989">RefLayerSupport::IsL2NormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01023">RefLayerSupport::IsLogSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01050">RefLayerSupport::IsLstmSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01161">RefLayerSupport::IsMaximumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01198">RefLayerSupport::IsMeanSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01268">RefLayerSupport::IsMemCopySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01296">RefLayerSupport::IsMinimumSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01332">RefLayerSupport::IsMultiplicationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01369">RefLayerSupport::IsNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01407">RefLayerSupport::IsPadSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01437">RefLayerSupport::IsPermuteSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01467">RefLayerSupport::IsPooling2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01885">RefLayerSupport::IsPreluSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01498">RefLayerSupport::IsQuantizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01534">RefLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01557">RefLayerSupport::IsResizeBilinearSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01583">RefLayerSupport::IsResizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01622">RefLayerSupport::IsSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01650">RefLayerSupport::IsSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01680">RefLayerSupport::IsSpaceToBatchNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01708">RefLayerSupport::IsSpaceToDepthSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01738">RefLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01789">RefLayerSupport::IsStackSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01821">RefLayerSupport::IsStridedSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01849">RefLayerSupport::IsSubtractionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01919">RefLayerSupport::IsTransposeConvolution2dSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01989">RefLayerSupport::IsTransposeSupported()</a>.</p>
9057<div class="fragment"><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; <span class="keywordtype">bool</span> <a class="code" href="namespacearmnn.xhtml#a02847c99a2acae3b267615479f93ab55">supported</a> = rule();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span> (!supported &amp;&amp; reason)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; reasonIfUnsupported.value() += std::string(reason) + <span class="stringliteral">&quot;\n&quot;</span>; <span class="comment">// Append the reason on a new line</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a02847c99a2acae3b267615479f93ab55">supported</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a02847c99a2acae3b267615479f93ab55"><div class="ttname"><a href="namespacearmnn.xhtml#a02847c99a2acae3b267615479f93ab55">armnn::supported</a></div><div class="ttdeci">ISubgraphViewConverter supported</div><div class="ttdef"><b>Definition:</b> <a href="_i_subgraph_view_converter_8hpp_source.xhtml#l00031">ISubgraphViewConverter.hpp:31</a></div></div>
9058</div><!-- fragment -->
9059</div>
9060</div>
9061<a id="ac7cce6c8c3c53b2feeba6548fc3fb00c"></a>
9062<h2 class="memtitle"><span class="permalink"><a href="#ac7cce6c8c3c53b2feeba6548fc3fb00c">&#9670;&nbsp;</a></span>CheckTensorDataTypesEqual()</h2>
9063
9064<div class="memitem">
9065<div class="memproto">
9066 <table class="memname">
9067 <tr>
9068 <td class="memname">bool armnn::CheckTensorDataTypesEqual </td>
9069 <td>(</td>
9070 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9071 <td class="paramname"><em>input0</em>, </td>
9072 </tr>
9073 <tr>
9074 <td class="paramkey"></td>
9075 <td></td>
9076 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9077 <td class="paramname"><em>input1</em>&#160;</td>
9078 </tr>
9079 <tr>
9080 <td></td>
9081 <td>)</td>
9082 <td></td><td></td>
9083 </tr>
9084 </table>
9085</div><div class="memdoc">
9086
9087<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00064">64</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
9088
9089<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>.</p>
9090
9091<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00079">IsAdditionSupported()</a>.</p>
9092<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> input0.GetDataType() == input1.GetDataType();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
9093</div>
9094</div>
9095<a id="a1391582cd6e145b67c98f3410667968e"></a>
9096<h2 class="memtitle"><span class="permalink"><a href="#a1391582cd6e145b67c98f3410667968e">&#9670;&nbsp;</a></span>ClAbsWorkloadValidate()</h2>
9097
9098<div class="memitem">
9099<div class="memproto">
9100 <table class="memname">
9101 <tr>
9102 <td class="memname">arm_compute::Status ClAbsWorkloadValidate </td>
9103 <td>(</td>
9104 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9105 <td class="paramname"><em>input</em>, </td>
9106 </tr>
9107 <tr>
9108 <td class="paramkey"></td>
9109 <td></td>
9110 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9111 <td class="paramname"><em>output</em>&#160;</td>
9112 </tr>
9113 <tr>
9114 <td></td>
9115 <td>)</td>
9116 <td></td><td></td>
9117 </tr>
9118 </table>
9119</div><div class="memdoc">
9120
9121<p class="definition">Definition at line <a class="el" href="_cl_abs_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_cl_abs_workload_8cpp_source.xhtml">ClAbsWorkload.cpp</a>.</p>
9122
9123<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00399">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
9124<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
9125</div>
9126</div>
9127<a id="a42ef3cee193102dc7755193579209cca"></a>
9128<h2 class="memtitle"><span class="permalink"><a href="#a42ef3cee193102dc7755193579209cca">&#9670;&nbsp;</a></span>ClActivationWorkloadValidate()</h2>
9129
9130<div class="memitem">
9131<div class="memproto">
9132 <table class="memname">
9133 <tr>
9134 <td class="memname">arm_compute::Status ClActivationWorkloadValidate </td>
9135 <td>(</td>
9136 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9137 <td class="paramname"><em>input</em>, </td>
9138 </tr>
9139 <tr>
9140 <td class="paramkey"></td>
9141 <td></td>
9142 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9143 <td class="paramname"><em>output</em>, </td>
9144 </tr>
9145 <tr>
9146 <td class="paramkey"></td>
9147 <td></td>
9148 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
9149 <td class="paramname"><em>descriptor</em>&#160;</td>
9150 </tr>
9151 <tr>
9152 <td></td>
9153 <td>)</td>
9154 <td></td><td></td>
9155 </tr>
9156 </table>
9157</div><div class="memdoc">
9158
9159<p class="definition">Definition at line <a class="el" href="_cl_activation_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_cl_activation_workload_8cpp_source.xhtml">ClActivationWorkload.cpp</a>.</p>
9160
9161<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00159">ClLayerSupport::IsActivationSupported()</a>.</p>
9162<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.xhtml#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00074">ArmComputeUtils.hpp:74</a></div></div>
9163</div><!-- fragment -->
9164</div>
9165</div>
9166<a id="aefc82adf365ff14b0095dafdd2df6afc"></a>
9167<h2 class="memtitle"><span class="permalink"><a href="#aefc82adf365ff14b0095dafdd2df6afc">&#9670;&nbsp;</a></span>ClAdditionValidate()</h2>
9168
9169<div class="memitem">
9170<div class="memproto">
9171 <table class="memname">
9172 <tr>
9173 <td class="memname">arm_compute::Status ClAdditionValidate </td>
9174 <td>(</td>
9175 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9176 <td class="paramname"><em>input0</em>, </td>
9177 </tr>
9178 <tr>
9179 <td class="paramkey"></td>
9180 <td></td>
9181 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9182 <td class="paramname"><em>input1</em>, </td>
9183 </tr>
9184 <tr>
9185 <td class="paramkey"></td>
9186 <td></td>
9187 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9188 <td class="paramname"><em>output</em>&#160;</td>
9189 </tr>
9190 <tr>
9191 <td></td>
9192 <td>)</td>
9193 <td></td><td></td>
9194 </tr>
9195 </table>
9196</div><div class="memdoc">
9197
9198<p class="definition">Definition at line <a class="el" href="_cl_addition_workload_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_cl_addition_workload_8cpp_source.xhtml">ClAdditionWorkload.cpp</a>.</p>
9199
9200<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00171">ClLayerSupport::IsAdditionSupported()</a>.</p>
9201<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticAddition::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9202</div><!-- fragment -->
9203</div>
9204</div>
9205<a id="ab80423b306d8e0436b9a316922911d4d"></a>
9206<h2 class="memtitle"><span class="permalink"><a href="#ab80423b306d8e0436b9a316922911d4d">&#9670;&nbsp;</a></span>ClArgMinMaxWorkloadValidate()</h2>
9207
9208<div class="memitem">
9209<div class="memproto">
9210 <table class="memname">
9211 <tr>
9212 <td class="memname">arm_compute::Status ClArgMinMaxWorkloadValidate </td>
9213 <td>(</td>
9214 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9215 <td class="paramname"><em>input</em>, </td>
9216 </tr>
9217 <tr>
9218 <td class="paramkey"></td>
9219 <td></td>
9220 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9221 <td class="paramname"><em>output</em>, </td>
9222 </tr>
9223 <tr>
9224 <td class="paramkey"></td>
9225 <td></td>
9226 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
9227 <td class="paramname"><em>descriptor</em>&#160;</td>
9228 </tr>
9229 <tr>
9230 <td></td>
9231 <td>)</td>
9232 <td></td><td></td>
9233 </tr>
9234 </table>
9235</div><div class="memdoc">
9236
9237<p class="definition">Definition at line <a class="el" href="_cl_arg_min_max_workload_8cpp_source.xhtml#l00030">30</a> of file <a class="el" href="_cl_arg_min_max_workload_8cpp_source.xhtml">ClArgMinMaxWorkload.cpp</a>.</p>
9238
9239<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00183">ClLayerSupport::IsArgMinMaxSupported()</a>.</p>
9240<div class="fragment"><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; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</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="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</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"> 46</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00127">TensorUtils.cpp:127</a></div></div>
9241<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
9242</div><!-- fragment -->
9243</div>
9244</div>
9245<a id="adfe10e7086e3e3b98927cf84aee03dd0"></a>
9246<h2 class="memtitle"><span class="permalink"><a href="#adfe10e7086e3e3b98927cf84aee03dd0">&#9670;&nbsp;</a></span>ClBackendId()</h2>
9247
9248<div class="memitem">
9249<div class="memproto">
9250 <table class="memname">
9251 <tr>
9252 <td class="memname">constexpr const char* armnn::ClBackendId </td>
9253 <td>(</td>
9254 <td class="paramname"></td><td>)</td>
9255 <td></td>
9256 </tr>
9257 </table>
9258</div><div class="memdoc">
9259
9260<p class="definition">Definition at line <a class="el" href="_cl_backend_id_8hpp_source.xhtml#l00010">10</a> of file <a class="el" href="_cl_backend_id_8hpp_source.xhtml">ClBackendId.hpp</a>.</p>
9261
9262<p class="reference">Referenced by <a class="el" href="_cl_backend_8cpp_source.xhtml#l00029">ClBackend::GetIdStatic()</a>.</p>
9263<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>; }</div></div><!-- fragment -->
9264</div>
9265</div>
9266<a id="ad6cb42ca5150bb96c151e4a4e6557d70"></a>
9267<h2 class="memtitle"><span class="permalink"><a href="#ad6cb42ca5150bb96c151e4a4e6557d70">&#9670;&nbsp;</a></span>ClBatchNormalizationValidate()</h2>
9268
9269<div class="memitem">
9270<div class="memproto">
9271 <table class="memname">
9272 <tr>
9273 <td class="memname">arm_compute::Status ClBatchNormalizationValidate </td>
9274 <td>(</td>
9275 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9276 <td class="paramname"><em>input</em>, </td>
9277 </tr>
9278 <tr>
9279 <td class="paramkey"></td>
9280 <td></td>
9281 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9282 <td class="paramname"><em>output</em>, </td>
9283 </tr>
9284 <tr>
9285 <td class="paramkey"></td>
9286 <td></td>
9287 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9288 <td class="paramname"><em>mean</em>, </td>
9289 </tr>
9290 <tr>
9291 <td class="paramkey"></td>
9292 <td></td>
9293 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9294 <td class="paramname"><em>var</em>, </td>
9295 </tr>
9296 <tr>
9297 <td class="paramkey"></td>
9298 <td></td>
9299 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9300 <td class="paramname"><em>beta</em>, </td>
9301 </tr>
9302 <tr>
9303 <td class="paramkey"></td>
9304 <td></td>
9305 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9306 <td class="paramname"><em>gamma</em>, </td>
9307 </tr>
9308 <tr>
9309 <td class="paramkey"></td>
9310 <td></td>
9311 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
9312 <td class="paramname"><em>desc</em>&#160;</td>
9313 </tr>
9314 <tr>
9315 <td></td>
9316 <td>)</td>
9317 <td></td><td></td>
9318 </tr>
9319 </table>
9320</div><div class="memdoc">
9321
9322<p class="definition">Definition at line <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.xhtml">ClBatchNormalizationFloatWorkload.cpp</a>.</p>
9323
9324<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00196">ClLayerSupport::IsBatchNormalizationSupported()</a>.</p>
9325<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, desc.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, desc.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, desc.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, desc.m_DataLayout);</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; <span class="keywordflow">return</span> arm_compute::CLBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; desc.m_Eps);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
9326</div>
9327</div>
9328<a id="a67957983877fb2c720a2ad7f88c45a3c"></a>
9329<h2 class="memtitle"><span class="permalink"><a href="#a67957983877fb2c720a2ad7f88c45a3c">&#9670;&nbsp;</a></span>ClBatchToSpaceNdWorkloadValidate()</h2>
9330
9331<div class="memitem">
9332<div class="memproto">
9333 <table class="memname">
9334 <tr>
9335 <td class="memname">arm_compute::Status ClBatchToSpaceNdWorkloadValidate </td>
9336 <td>(</td>
9337 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9338 <td class="paramname"><em>input</em>, </td>
9339 </tr>
9340 <tr>
9341 <td class="paramkey"></td>
9342 <td></td>
9343 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9344 <td class="paramname"><em>output</em>, </td>
9345 </tr>
9346 <tr>
9347 <td class="paramkey"></td>
9348 <td></td>
9349 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
9350 <td class="paramname"><em>desc</em>&#160;</td>
9351 </tr>
9352 <tr>
9353 <td></td>
9354 <td>)</td>
9355 <td></td><td></td>
9356 </tr>
9357 </table>
9358</div><div class="memdoc">
9359
9360<p class="definition">Definition at line <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.xhtml#l00045">45</a> of file <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.xhtml">ClBatchToSpaceNdWorkload.cpp</a>.</p>
9361
9362<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00684">BatchToSpaceNdDescriptor::m_DataLayout</a>.</p>
9363
9364<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00216">ClLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
9365<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; int32_t blockHeight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; int32_t blockWidth = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockShape[1]);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; blockWidth,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; blockHeight,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
9366<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9367<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
9368</div><!-- fragment -->
9369</div>
9370</div>
9371<a id="a7782f0809076f14363eacb4a38964b9f"></a>
9372<h2 class="memtitle"><span class="permalink"><a href="#a7782f0809076f14363eacb4a38964b9f">&#9670;&nbsp;</a></span>ClConcatWorkloadValidate()</h2>
9373
9374<div class="memitem">
9375<div class="memproto">
9376 <table class="memname">
9377 <tr>
9378 <td class="memname">arm_compute::Status ClConcatWorkloadValidate </td>
9379 <td>(</td>
9380 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
9381 <td class="paramname"><em>inputs</em>, </td>
9382 </tr>
9383 <tr>
9384 <td class="paramkey"></td>
9385 <td></td>
9386 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9387 <td class="paramname"><em>output</em>, </td>
9388 </tr>
9389 <tr>
9390 <td class="paramkey"></td>
9391 <td></td>
9392 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
9393 <td class="paramname"><em>descriptor</em>&#160;</td>
9394 </tr>
9395 <tr>
9396 <td></td>
9397 <td>)</td>
9398 <td></td><td></td>
9399 </tr>
9400 </table>
9401</div><div class="memdoc">
9402
9403<p class="definition">Definition at line <a class="el" href="_cl_concat_workload_8cpp_source.xhtml#l00029">29</a> of file <a class="el" href="_cl_concat_workload_8cpp_source.xhtml">ClConcatWorkload.cpp</a>.</p>
9404
9405<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00246">ClLayerSupport::IsConcatSupported()</a>.</p>
9406<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</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; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</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; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</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"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::CLConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
9407</div><!-- fragment -->
9408</div>
9409</div>
9410<a id="a46efae0191388fd33db4e95c5d79e2be"></a>
9411<h2 class="memtitle"><span class="permalink"><a href="#a46efae0191388fd33db4e95c5d79e2be">&#9670;&nbsp;</a></span>ClConvertFp16ToFp32WorkloadValidate()</h2>
9412
9413<div class="memitem">
9414<div class="memproto">
9415 <table class="memname">
9416 <tr>
9417 <td class="memname">arm_compute::Status ClConvertFp16ToFp32WorkloadValidate </td>
9418 <td>(</td>
9419 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9420 <td class="paramname"><em>input</em>, </td>
9421 </tr>
9422 <tr>
9423 <td class="paramkey"></td>
9424 <td></td>
9425 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9426 <td class="paramname"><em>output</em>&#160;</td>
9427 </tr>
9428 <tr>
9429 <td></td>
9430 <td>)</td>
9431 <td></td><td></td>
9432 </tr>
9433 </table>
9434</div><div class="memdoc">
9435
9436<p class="definition">Definition at line <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.xhtml">ClConvertFp16ToFp32Workload.cpp</a>.</p>
9437
9438<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>.</p>
9439
9440<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00296">ClLayerSupport::IsConvertFp16ToFp32Supported()</a>.</p>
9441<div class="fragment"><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">if</span> (input.GetDataType() != DataType::Float16)</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float16&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float32)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float32&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</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"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9442</div><!-- fragment -->
9443</div>
9444</div>
9445<a id="a37f6946bfb7a9c7d64881b7a2e13945f"></a>
9446<h2 class="memtitle"><span class="permalink"><a href="#a37f6946bfb7a9c7d64881b7a2e13945f">&#9670;&nbsp;</a></span>ClConvertFp32ToFp16WorkloadValidate()</h2>
9447
9448<div class="memitem">
9449<div class="memproto">
9450 <table class="memname">
9451 <tr>
9452 <td class="memname">arm_compute::Status ClConvertFp32ToFp16WorkloadValidate </td>
9453 <td>(</td>
9454 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9455 <td class="paramname"><em>input</em>, </td>
9456 </tr>
9457 <tr>
9458 <td class="paramkey"></td>
9459 <td></td>
9460 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9461 <td class="paramname"><em>output</em>&#160;</td>
9462 </tr>
9463 <tr>
9464 <td></td>
9465 <td>)</td>
9466 <td></td><td></td>
9467 </tr>
9468 </table>
9469</div><div class="memdoc">
9470
9471<p class="definition">Definition at line <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.xhtml">ClConvertFp32ToFp16Workload.cpp</a>.</p>
9472
9473<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>.</p>
9474
9475<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00306">ClLayerSupport::IsConvertFp32ToFp16Supported()</a>.</p>
9476<div class="fragment"><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">if</span> (input.GetDataType() != DataType::Float32)</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Input should be Float32&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (output.GetDataType() != DataType::Float16)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a>(arm_compute::ErrorCode::RUNTIME_ERROR, <span class="stringliteral">&quot;Output should be Float16&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</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"> 46</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthConvertLayer::validate(</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclInputInfo, &amp;aclOutputInfo, g_AclConvertPolicy, 0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9477</div><!-- fragment -->
9478</div>
9479</div>
9480<a id="acd1146eb56f1473a0bf4561bcc1d1529"></a>
9481<h2 class="memtitle"><span class="permalink"><a href="#acd1146eb56f1473a0bf4561bcc1d1529">&#9670;&nbsp;</a></span>ClConvolution2dWorkloadValidate()</h2>
9482
9483<div class="memitem">
9484<div class="memproto">
9485 <table class="memname">
9486 <tr>
9487 <td class="memname">arm_compute::Status ClConvolution2dWorkloadValidate </td>
9488 <td>(</td>
9489 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9490 <td class="paramname"><em>input</em>, </td>
9491 </tr>
9492 <tr>
9493 <td class="paramkey"></td>
9494 <td></td>
9495 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9496 <td class="paramname"><em>output</em>, </td>
9497 </tr>
9498 <tr>
9499 <td class="paramkey"></td>
9500 <td></td>
9501 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
9502 <td class="paramname"><em>descriptor</em>, </td>
9503 </tr>
9504 <tr>
9505 <td class="paramkey"></td>
9506 <td></td>
9507 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9508 <td class="paramname"><em>weights</em>, </td>
9509 </tr>
9510 <tr>
9511 <td class="paramkey"></td>
9512 <td></td>
9513 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
9514 <td class="paramname"><em>biases</em>&#160;</td>
9515 </tr>
9516 <tr>
9517 <td></td>
9518 <td>)</td>
9519 <td></td><td></td>
9520 </tr>
9521 </table>
9522</div><div class="memdoc">
9523
9524<p class="definition">Definition at line <a class="el" href="_cl_convolution2d_workload_8cpp_source.xhtml#l00023">23</a> of file <a class="el" href="_cl_convolution2d_workload_8cpp_source.xhtml">ClConvolution2dWorkload.cpp</a>.</p>
9525
9526<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00316">ClLayerSupport::IsConvolution2dSupported()</a>.</p>
9527<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; descriptor.m_DilationY);</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; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</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; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</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"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::CLConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div></div><!-- fragment -->
9528</div>
9529</div>
9530<a id="a5634af98b603236c6748adb5ac92e766"></a>
9531<h2 class="memtitle"><span class="permalink"><a href="#a5634af98b603236c6748adb5ac92e766">&#9670;&nbsp;</a></span>ClDepthToSpaceWorkloadValidate()</h2>
9532
9533<div class="memitem">
9534<div class="memproto">
9535 <table class="memname">
9536 <tr>
9537 <td class="memname">arm_compute::Status ClDepthToSpaceWorkloadValidate </td>
9538 <td>(</td>
9539 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9540 <td class="paramname"><em>input</em>, </td>
9541 </tr>
9542 <tr>
9543 <td class="paramkey"></td>
9544 <td></td>
9545 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9546 <td class="paramname"><em>output</em>, </td>
9547 </tr>
9548 <tr>
9549 <td class="paramkey"></td>
9550 <td></td>
9551 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
9552 <td class="paramname"><em>desc</em>&#160;</td>
9553 </tr>
9554 <tr>
9555 <td></td>
9556 <td>)</td>
9557 <td></td><td></td>
9558 </tr>
9559 </table>
9560</div><div class="memdoc">
9561
9562<p class="definition">Definition at line <a class="el" href="_cl_depth_to_space_workload_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_cl_depth_to_space_workload_8cpp_source.xhtml">ClDepthToSpaceWorkload.cpp</a>.</p>
9563
9564<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
9565
9566<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00342">ClLayerSupport::IsDepthToSpaceSupported()</a>.</p>
9567<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; int32_t blockSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockSize);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLDepthToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; blockSize);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
9568<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9569<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
9570</div><!-- fragment -->
9571</div>
9572</div>
9573<a id="a4ec5dfcb3e419ddce1fcb3b799f312e1"></a>
9574<h2 class="memtitle"><span class="permalink"><a href="#a4ec5dfcb3e419ddce1fcb3b799f312e1">&#9670;&nbsp;</a></span>ClDepthwiseConvolutionWorkloadValidate()</h2>
9575
9576<div class="memitem">
9577<div class="memproto">
9578 <table class="memname">
9579 <tr>
9580 <td class="memname">arm_compute::Status ClDepthwiseConvolutionWorkloadValidate </td>
9581 <td>(</td>
9582 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9583 <td class="paramname"><em>input</em>, </td>
9584 </tr>
9585 <tr>
9586 <td class="paramkey"></td>
9587 <td></td>
9588 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9589 <td class="paramname"><em>output</em>, </td>
9590 </tr>
9591 <tr>
9592 <td class="paramkey"></td>
9593 <td></td>
9594 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
9595 <td class="paramname"><em>descriptor</em>, </td>
9596 </tr>
9597 <tr>
9598 <td class="paramkey"></td>
9599 <td></td>
9600 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9601 <td class="paramname"><em>weights</em>, </td>
9602 </tr>
9603 <tr>
9604 <td class="paramkey"></td>
9605 <td></td>
9606 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
9607 <td class="paramname"><em>biases</em>&#160;</td>
9608 </tr>
9609 <tr>
9610 <td></td>
9611 <td>)</td>
9612 <td></td><td></td>
9613 </tr>
9614 </table>
9615</div><div class="memdoc">
9616
9617<p class="definition">Definition at line <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.xhtml#l00024">24</a> of file <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.xhtml">ClDepthwiseConvolutionWorkload.cpp</a>.</p>
9618
9619<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00354">ClLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00370">ClLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
9620<div class="fragment"><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; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.GetShape()[0];</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; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; TensorInfo weightsPermuted = <a class="code" href="namespacearmnn.xhtml#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.m_DataLayout);</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">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.m_DataLayout);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</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"> 46</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; BOOST_ASSERT(biases.has_value());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</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="keyword">const</span> arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; descriptor.m_DilationX,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclDilationInfo);</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="ttc" id="namespacearmnn_xhtml_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.xhtml#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00109">WorkloadUtils.cpp:109</a></div></div>
9621</div><!-- fragment -->
9622</div>
9623</div>
9624<a id="a75045734c29d7d6635342c05adbc151b"></a>
9625<h2 class="memtitle"><span class="permalink"><a href="#a75045734c29d7d6635342c05adbc151b">&#9670;&nbsp;</a></span>ClDequantizeWorkloadValidate()</h2>
9626
9627<div class="memitem">
9628<div class="memproto">
9629 <table class="memname">
9630 <tr>
9631 <td class="memname">arm_compute::Status ClDequantizeWorkloadValidate </td>
9632 <td>(</td>
9633 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9634 <td class="paramname"><em>input</em>, </td>
9635 </tr>
9636 <tr>
9637 <td class="paramkey"></td>
9638 <td></td>
9639 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9640 <td class="paramname"><em>output</em>&#160;</td>
9641 </tr>
9642 <tr>
9643 <td></td>
9644 <td>)</td>
9645 <td></td><td></td>
9646 </tr>
9647 </table>
9648</div><div class="memdoc">
9649
9650<p class="definition">Definition at line <a class="el" href="_cl_dequantize_workload_8cpp_source.xhtml#l00023">23</a> of file <a class="el" href="_cl_dequantize_workload_8cpp_source.xhtml">ClDequantizeWorkload.cpp</a>.</p>
9651
9652<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00332">ClLayerSupport::IsDequantizeSupported()</a>.</p>
9653<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDequantizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
9654</div>
9655</div>
9656<a id="a6a0edac987d58b405636df2eb2ee525d"></a>
9657<h2 class="memtitle"><span class="permalink"><a href="#a6a0edac987d58b405636df2eb2ee525d">&#9670;&nbsp;</a></span>ClDivisionWorkloadValidate()</h2>
9658
9659<div class="memitem">
9660<div class="memproto">
9661 <table class="memname">
9662 <tr>
9663 <td class="memname">arm_compute::Status ClDivisionWorkloadValidate </td>
9664 <td>(</td>
9665 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9666 <td class="paramname"><em>input0</em>, </td>
9667 </tr>
9668 <tr>
9669 <td class="paramkey"></td>
9670 <td></td>
9671 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9672 <td class="paramname"><em>input1</em>, </td>
9673 </tr>
9674 <tr>
9675 <td class="paramkey"></td>
9676 <td></td>
9677 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9678 <td class="paramname"><em>output</em>&#160;</td>
9679 </tr>
9680 <tr>
9681 <td></td>
9682 <td>)</td>
9683 <td></td><td></td>
9684 </tr>
9685 </table>
9686</div><div class="memdoc">
9687
9688<p class="definition">Definition at line <a class="el" href="_cl_division_float_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_cl_division_float_workload_8cpp_source.xhtml">ClDivisionFloatWorkload.cpp</a>.</p>
9689
9690<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00387">ClLayerSupport::IsDivisionSupported()</a>.</p>
9691<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::CLArithmeticDivision::validate(&amp;aclInput1, &amp;aclInput2, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
9692</div>
9693</div>
9694<a id="a8874961260f35da85229554f92e16ca9"></a>
9695<h2 class="memtitle"><span class="permalink"><a href="#a8874961260f35da85229554f92e16ca9">&#9670;&nbsp;</a></span>ClFloorWorkloadValidate()</h2>
9696
9697<div class="memitem">
9698<div class="memproto">
9699 <table class="memname">
9700 <tr>
9701 <td class="memname">arm_compute::Status ClFloorWorkloadValidate </td>
9702 <td>(</td>
9703 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9704 <td class="paramname"><em>input</em>, </td>
9705 </tr>
9706 <tr>
9707 <td class="paramkey"></td>
9708 <td></td>
9709 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9710 <td class="paramname"><em>output</em>&#160;</td>
9711 </tr>
9712 <tr>
9713 <td></td>
9714 <td>)</td>
9715 <td></td><td></td>
9716 </tr>
9717 </table>
9718</div><div class="memdoc">
9719
9720<p class="definition">Definition at line <a class="el" href="_cl_floor_float_workload_8cpp_source.xhtml#l00014">14</a> of file <a class="el" href="_cl_floor_float_workload_8cpp_source.xhtml">ClFloorFloatWorkload.cpp</a>.</p>
9721
9722<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00422">ClLayerSupport::IsFloorSupported()</a>.</p>
9723<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> arm_compute::CLFloor::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;}</div></div><!-- fragment -->
9724</div>
9725</div>
9726<a id="a00ef2c55913f952924a3e23556655285"></a>
9727<h2 class="memtitle"><span class="permalink"><a href="#a00ef2c55913f952924a3e23556655285">&#9670;&nbsp;</a></span>ClFullyConnectedWorkloadValidate()</h2>
9728
9729<div class="memitem">
9730<div class="memproto">
9731 <table class="memname">
9732 <tr>
9733 <td class="memname">arm_compute::Status ClFullyConnectedWorkloadValidate </td>
9734 <td>(</td>
9735 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9736 <td class="paramname"><em>input</em>, </td>
9737 </tr>
9738 <tr>
9739 <td class="paramkey"></td>
9740 <td></td>
9741 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9742 <td class="paramname"><em>output</em>, </td>
9743 </tr>
9744 <tr>
9745 <td class="paramkey"></td>
9746 <td></td>
9747 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9748 <td class="paramname"><em>weights</em>, </td>
9749 </tr>
9750 <tr>
9751 <td class="paramkey"></td>
9752 <td></td>
9753 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9754 <td class="paramname"><em>biases</em>, </td>
9755 </tr>
9756 <tr>
9757 <td class="paramkey"></td>
9758 <td></td>
9759 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
9760 <td class="paramname"><em>descriptor</em>&#160;</td>
9761 </tr>
9762 <tr>
9763 <td></td>
9764 <td>)</td>
9765 <td></td><td></td>
9766 </tr>
9767 </table>
9768</div><div class="memdoc">
9769
9770<p class="definition">Definition at line <a class="el" href="_cl_fully_connected_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_cl_fully_connected_workload_8cpp_source.xhtml">ClFullyConnectedWorkload.cpp</a>.</p>
9771
9772<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00432">ClLayerSupport::IsFullyConnectedSupported()</a>.</p>
9773<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</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="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.xhtml#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</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="keywordflow">return</span> arm_compute::CLFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.xhtml#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00119">ArmComputeUtils.hpp:119</a></div></div>
9774</div><!-- fragment -->
9775</div>
9776</div>
9777<a id="acf69869c2242e5e3741c4f9252099393"></a>
9778<h2 class="memtitle"><span class="permalink"><a href="#acf69869c2242e5e3741c4f9252099393">&#9670;&nbsp;</a></span>ClGreaterWorkloadValidate()</h2>
9779
9780<div class="memitem">
9781<div class="memproto">
9782 <table class="memname">
9783 <tr>
9784 <td class="memname">arm_compute::Status ClGreaterWorkloadValidate </td>
9785 <td>(</td>
9786 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9787 <td class="paramname"><em>input0</em>, </td>
9788 </tr>
9789 <tr>
9790 <td class="paramkey"></td>
9791 <td></td>
9792 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9793 <td class="paramname"><em>input1</em>, </td>
9794 </tr>
9795 <tr>
9796 <td class="paramkey"></td>
9797 <td></td>
9798 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9799 <td class="paramname"><em>output</em>&#160;</td>
9800 </tr>
9801 <tr>
9802 <td></td>
9803 <td>)</td>
9804 <td></td><td></td>
9805 </tr>
9806 </table>
9807</div><div class="memdoc">
9808
9809<p class="definition">Definition at line <a class="el" href="_cl_greater_workload_8cpp_source.xhtml#l00024">24</a> of file <a class="el" href="_cl_greater_workload_8cpp_source.xhtml">ClGreaterWorkload.cpp</a>.</p>
9810
9811<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00228">ClLayerSupport::IsComparisonSupported()</a>.</p>
9812<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLComparison::validate(</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput0Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::ComparisonOperation::Greater);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
9813</div><!-- fragment -->
9814</div>
9815</div>
9816<a id="a79d362f0c6e04d51807e0d81b5b05f3a"></a>
9817<h2 class="memtitle"><span class="permalink"><a href="#a79d362f0c6e04d51807e0d81b5b05f3a">&#9670;&nbsp;</a></span>ClInstanceNormalizationWorkloadValidate()</h2>
9818
9819<div class="memitem">
9820<div class="memproto">
9821 <table class="memname">
9822 <tr>
9823 <td class="memname">arm_compute::Status ClInstanceNormalizationWorkloadValidate </td>
9824 <td>(</td>
9825 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9826 <td class="paramname"><em>input</em>, </td>
9827 </tr>
9828 <tr>
9829 <td class="paramkey"></td>
9830 <td></td>
9831 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9832 <td class="paramname"><em>output</em>, </td>
9833 </tr>
9834 <tr>
9835 <td class="paramkey"></td>
9836 <td></td>
9837 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
9838 <td class="paramname"><em>descriptor</em>&#160;</td>
9839 </tr>
9840 <tr>
9841 <td></td>
9842 <td>)</td>
9843 <td></td><td></td>
9844 </tr>
9845 </table>
9846</div><div class="memdoc">
9847
9848<p class="definition">Definition at line <a class="el" href="_cl_instance_normalization_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_cl_instance_normalization_workload_8cpp_source.xhtml">ClInstanceNormalizationWorkload.cpp</a>.</p>
9849
9850<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00463">ClLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
9851<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
9852</div>
9853</div>
9854<a id="aef334cdb24000c330f4d2e5f1b384784"></a>
9855<h2 class="memtitle"><span class="permalink"><a href="#aef334cdb24000c330f4d2e5f1b384784">&#9670;&nbsp;</a></span>ClL2NormalizationWorkloadValidate()</h2>
9856
9857<div class="memitem">
9858<div class="memproto">
9859 <table class="memname">
9860 <tr>
9861 <td class="memname">arm_compute::Status ClL2NormalizationWorkloadValidate </td>
9862 <td>(</td>
9863 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9864 <td class="paramname"><em>input</em>, </td>
9865 </tr>
9866 <tr>
9867 <td class="paramkey"></td>
9868 <td></td>
9869 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9870 <td class="paramname"><em>output</em>, </td>
9871 </tr>
9872 <tr>
9873 <td class="paramkey"></td>
9874 <td></td>
9875 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
9876 <td class="paramname"><em>descriptor</em>&#160;</td>
9877 </tr>
9878 <tr>
9879 <td></td>
9880 <td>)</td>
9881 <td></td><td></td>
9882 </tr>
9883 </table>
9884</div><div class="memdoc">
9885
9886<p class="definition">Definition at line <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.xhtml">ClL2NormalizationFloatWorkload.cpp</a>.</p>
9887
9888<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00475">ClLayerSupport::IsL2NormalizationSupported()</a>.</p>
9889<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::CLL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
9890</div>
9891</div>
9892<a id="a90ab88fe4c7aa9466c4653404a6b2213"></a>
9893<h2 class="memtitle"><span class="permalink"><a href="#a90ab88fe4c7aa9466c4653404a6b2213">&#9670;&nbsp;</a></span>ClLstmFloatWorkloadValidate()</h2>
9894
9895<div class="memitem">
9896<div class="memproto">
9897 <table class="memname">
9898 <tr>
9899 <td class="memname">arm_compute::Status ClLstmFloatWorkloadValidate </td>
9900 <td>(</td>
9901 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9902 <td class="paramname"><em>input</em>, </td>
9903 </tr>
9904 <tr>
9905 <td class="paramkey"></td>
9906 <td></td>
9907 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9908 <td class="paramname"><em>outputStateIn</em>, </td>
9909 </tr>
9910 <tr>
9911 <td class="paramkey"></td>
9912 <td></td>
9913 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9914 <td class="paramname"><em>cellStateIn</em>, </td>
9915 </tr>
9916 <tr>
9917 <td class="paramkey"></td>
9918 <td></td>
9919 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9920 <td class="paramname"><em>scratchBuffer</em>, </td>
9921 </tr>
9922 <tr>
9923 <td class="paramkey"></td>
9924 <td></td>
9925 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9926 <td class="paramname"><em>outputStateOut</em>, </td>
9927 </tr>
9928 <tr>
9929 <td class="paramkey"></td>
9930 <td></td>
9931 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9932 <td class="paramname"><em>cellStateOut</em>, </td>
9933 </tr>
9934 <tr>
9935 <td class="paramkey"></td>
9936 <td></td>
9937 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9938 <td class="paramname"><em>output</em>, </td>
9939 </tr>
9940 <tr>
9941 <td class="paramkey"></td>
9942 <td></td>
9943 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
9944 <td class="paramname"><em>descriptor</em>, </td>
9945 </tr>
9946 <tr>
9947 <td class="paramkey"></td>
9948 <td></td>
9949 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
9950 <td class="paramname"><em>paramsInfo</em>&#160;</td>
9951 </tr>
9952 <tr>
9953 <td></td>
9954 <td>)</td>
9955 <td></td><td></td>
9956 </tr>
9957 </table>
9958</div><div class="memdoc">
9959
9960<p class="definition">Definition at line <a class="el" href="_cl_lstm_float_workload_8cpp_source.xhtml#l00256">256</a> of file <a class="el" href="_cl_lstm_float_workload_8cpp_source.xhtml">ClLstmFloatWorkload.cpp</a>.</p>
9961
9962<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00487">ClLayerSupport::IsLstmSupported()</a>.</p>
9963<div class="fragment"><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="comment">// The inputs and the outputs</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</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="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</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="keywordflow">if</span> (paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span>)</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; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</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; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; paramsInfo.m_CellToInputWeights != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; &amp;aclCellToInputWeightsInfo: <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; &amp;aclInputGateBiasInfo);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</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; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; &amp;aclProjectionBiasInfo: <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</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; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</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; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</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;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 0)</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; <span class="comment">// no activation, do nothing</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 1)</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 3)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 4)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (descriptor.m_ActivationFunc == 6)</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; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</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">else</span></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; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</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; <span class="keywordflow">if</span> (descriptor.m_LayerNormEnabled)</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">if</span> (!descriptor.m_CifgEnabled)</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; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</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; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</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; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</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; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</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; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> arm_compute::CLLSTMLayer::validate(&amp;aclInputInfo, &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; &amp;aclOutputStateInInfo, &amp;aclCellStateInInfo,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; &amp;aclScratchBufferInfo, &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; lstm_params_info, activationLayerInfo,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; cell_threshold, projection_threshold);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</a></div></div>
9964</div><!-- fragment -->
9965</div>
9966</div>
9967<a id="a553706c6338ffc52b0d916859f642587"></a>
9968<h2 class="memtitle"><span class="permalink"><a href="#a553706c6338ffc52b0d916859f642587">&#9670;&nbsp;</a></span>ClMaximumWorkloadValidate()</h2>
9969
9970<div class="memitem">
9971<div class="memproto">
9972 <table class="memname">
9973 <tr>
9974 <td class="memname">arm_compute::Status ClMaximumWorkloadValidate </td>
9975 <td>(</td>
9976 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9977 <td class="paramname"><em>input0</em>, </td>
9978 </tr>
9979 <tr>
9980 <td class="paramkey"></td>
9981 <td></td>
9982 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9983 <td class="paramname"><em>input1</em>, </td>
9984 </tr>
9985 <tr>
9986 <td class="paramkey"></td>
9987 <td></td>
9988 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
9989 <td class="paramname"><em>output</em>&#160;</td>
9990 </tr>
9991 <tr>
9992 <td></td>
9993 <td>)</td>
9994 <td></td><td></td>
9995 </tr>
9996 </table>
9997</div><div class="memdoc">
9998
9999<p class="definition">Definition at line <a class="el" href="_cl_maximum_workload_8cpp_source.xhtml#l00024">24</a> of file <a class="el" href="_cl_maximum_workload_8cpp_source.xhtml">ClMaximumWorkload.cpp</a>.</p>
10000
10001<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00511">ClLayerSupport::IsMaximumSupported()</a>.</p>
10002<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMax::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</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; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
10003</div><!-- fragment -->
10004</div>
10005</div>
10006<a id="aa1fff3c5bdebee27ad33aacc6d110d32"></a>
10007<h2 class="memtitle"><span class="permalink"><a href="#aa1fff3c5bdebee27ad33aacc6d110d32">&#9670;&nbsp;</a></span>ClMeanValidate()</h2>
10008
10009<div class="memitem">
10010<div class="memproto">
10011 <table class="memname">
10012 <tr>
10013 <td class="memname">arm_compute::Status ClMeanValidate </td>
10014 <td>(</td>
10015 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10016 <td class="paramname"><em>input</em>, </td>
10017 </tr>
10018 <tr>
10019 <td class="paramkey"></td>
10020 <td></td>
10021 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10022 <td class="paramname"><em>output</em>, </td>
10023 </tr>
10024 <tr>
10025 <td class="paramkey"></td>
10026 <td></td>
10027 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
10028 <td class="paramname"><em>desc</em>&#160;</td>
10029 </tr>
10030 <tr>
10031 <td></td>
10032 <td>)</td>
10033 <td></td><td></td>
10034 </tr>
10035 </table>
10036</div><div class="memdoc">
10037
10038<p class="definition">Definition at line <a class="el" href="_cl_mean_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_cl_mean_workload_8cpp_source.xhtml">ClMeanWorkload.cpp</a>.</p>
10039
10040<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00523">ClLayerSupport::IsMeanSupported()</a>.</p>
10041<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_Axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
10042</div><!-- fragment -->
10043</div>
10044</div>
10045<a id="a8c04c8e796a4fbec706df42ed9c27e4e"></a>
10046<h2 class="memtitle"><span class="permalink"><a href="#a8c04c8e796a4fbec706df42ed9c27e4e">&#9670;&nbsp;</a></span>ClMinimumWorkloadValidate()</h2>
10047
10048<div class="memitem">
10049<div class="memproto">
10050 <table class="memname">
10051 <tr>
10052 <td class="memname">arm_compute::Status ClMinimumWorkloadValidate </td>
10053 <td>(</td>
10054 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10055 <td class="paramname"><em>input0</em>, </td>
10056 </tr>
10057 <tr>
10058 <td class="paramkey"></td>
10059 <td></td>
10060 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10061 <td class="paramname"><em>input1</em>, </td>
10062 </tr>
10063 <tr>
10064 <td class="paramkey"></td>
10065 <td></td>
10066 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10067 <td class="paramname"><em>output</em>&#160;</td>
10068 </tr>
10069 <tr>
10070 <td></td>
10071 <td>)</td>
10072 <td></td><td></td>
10073 </tr>
10074 </table>
10075</div><div class="memdoc">
10076
10077<p class="definition">Definition at line <a class="el" href="_cl_minimum_workload_8cpp_source.xhtml#l00024">24</a> of file <a class="el" href="_cl_minimum_workload_8cpp_source.xhtml">ClMinimumWorkload.cpp</a>.</p>
10078
10079<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00543">ClLayerSupport::IsMinimumSupported()</a>.</p>
10080<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLElementwiseMin::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; &amp;aclOutputInfo);</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; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
10081</div><!-- fragment -->
10082</div>
10083</div>
10084<a id="a674a280a55c3760374a05ee24e9e3e74"></a>
10085<h2 class="memtitle"><span class="permalink"><a href="#a674a280a55c3760374a05ee24e9e3e74">&#9670;&nbsp;</a></span>ClMultiplicationWorkloadValidate()</h2>
10086
10087<div class="memitem">
10088<div class="memproto">
10089 <table class="memname">
10090 <tr>
10091 <td class="memname">arm_compute::Status ClMultiplicationWorkloadValidate </td>
10092 <td>(</td>
10093 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10094 <td class="paramname"><em>input0</em>, </td>
10095 </tr>
10096 <tr>
10097 <td class="paramkey"></td>
10098 <td></td>
10099 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10100 <td class="paramname"><em>input1</em>, </td>
10101 </tr>
10102 <tr>
10103 <td class="paramkey"></td>
10104 <td></td>
10105 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10106 <td class="paramname"><em>output</em>&#160;</td>
10107 </tr>
10108 <tr>
10109 <td></td>
10110 <td>)</td>
10111 <td></td><td></td>
10112 </tr>
10113 </table>
10114</div><div class="memdoc">
10115
10116<p class="definition">Definition at line <a class="el" href="_cl_multiplication_workload_8cpp_source.xhtml#l00014">14</a> of file <a class="el" href="_cl_multiplication_workload_8cpp_source.xhtml">ClMultiplicationWorkload.cpp</a>.</p>
10117
10118<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00555">ClLayerSupport::IsMultiplicationSupported()</a>.</p>
10119<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</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">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; 1.0f,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
10120</div>
10121</div>
10122<a id="a144c2e243a255715f309999077ed1792"></a>
10123<h2 class="memtitle"><span class="permalink"><a href="#a144c2e243a255715f309999077ed1792">&#9670;&nbsp;</a></span>ClNormalizationWorkloadValidate()</h2>
10124
10125<div class="memitem">
10126<div class="memproto">
10127 <table class="memname">
10128 <tr>
10129 <td class="memname">arm_compute::Status ClNormalizationWorkloadValidate </td>
10130 <td>(</td>
10131 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10132 <td class="paramname"><em>input</em>, </td>
10133 </tr>
10134 <tr>
10135 <td class="paramkey"></td>
10136 <td></td>
10137 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10138 <td class="paramname"><em>output</em>, </td>
10139 </tr>
10140 <tr>
10141 <td class="paramkey"></td>
10142 <td></td>
10143 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
10144 <td class="paramname"><em>descriptor</em>&#160;</td>
10145 </tr>
10146 <tr>
10147 <td></td>
10148 <td>)</td>
10149 <td></td><td></td>
10150 </tr>
10151 </table>
10152</div><div class="memdoc">
10153
10154<p class="definition">Definition at line <a class="el" href="_cl_normalization_float_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_cl_normalization_float_workload_8cpp_source.xhtml">ClNormalizationFloatWorkload.cpp</a>.</p>
10155
10156<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00567">ClLayerSupport::IsNormalizationSupported()</a>.</p>
10157<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::NormalizationLayerInfo layerInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLNormalizationLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
10158</div>
10159</div>
10160<a id="adcf7b7d939bac1cfaeb333c7b3175bb8"></a>
10161<h2 class="memtitle"><span class="permalink"><a href="#adcf7b7d939bac1cfaeb333c7b3175bb8">&#9670;&nbsp;</a></span>ClPadValidate()</h2>
10162
10163<div class="memitem">
10164<div class="memproto">
10165 <table class="memname">
10166 <tr>
10167 <td class="memname">arm_compute::Status ClPadValidate </td>
10168 <td>(</td>
10169 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10170 <td class="paramname"><em>input</em>, </td>
10171 </tr>
10172 <tr>
10173 <td class="paramkey"></td>
10174 <td></td>
10175 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10176 <td class="paramname"><em>output</em>, </td>
10177 </tr>
10178 <tr>
10179 <td class="paramkey"></td>
10180 <td></td>
10181 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
10182 <td class="paramname"><em>descriptor</em>&#160;</td>
10183 </tr>
10184 <tr>
10185 <td></td>
10186 <td>)</td>
10187 <td></td><td></td>
10188 </tr>
10189 </table>
10190</div><div class="memdoc">
10191
10192<p class="definition">Definition at line <a class="el" href="_cl_pad_workload_8cpp_source.xhtml#l00045">45</a> of file <a class="el" href="_cl_pad_workload_8cpp_source.xhtml">ClPadWorkload.cpp</a>.</p>
10193
10194<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00581">ClLayerSupport::IsPadSupported()</a>.</p>
10195<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</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; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; std::begin(reversed_PadList));</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; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</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; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLPadLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; padList);</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; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
10196</div><!-- fragment -->
10197</div>
10198</div>
10199<a id="a26c25df9e2271333ab4d4ef71db41dca"></a>
10200<h2 class="memtitle"><span class="permalink"><a href="#a26c25df9e2271333ab4d4ef71db41dca">&#9670;&nbsp;</a></span>ClPermuteWorkloadValidate()</h2>
10201
10202<div class="memitem">
10203<div class="memproto">
10204 <table class="memname">
10205 <tr>
10206 <td class="memname">arm_compute::Status ClPermuteWorkloadValidate </td>
10207 <td>(</td>
10208 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10209 <td class="paramname"><em>input</em>, </td>
10210 </tr>
10211 <tr>
10212 <td class="paramkey"></td>
10213 <td></td>
10214 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10215 <td class="paramname"><em>output</em>, </td>
10216 </tr>
10217 <tr>
10218 <td class="paramkey"></td>
10219 <td></td>
10220 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
10221 <td class="paramname"><em>descriptor</em>&#160;</td>
10222 </tr>
10223 <tr>
10224 <td></td>
10225 <td>)</td>
10226 <td></td><td></td>
10227 </tr>
10228 </table>
10229</div><div class="memdoc">
10230
10231<p class="definition">Definition at line <a class="el" href="_cl_permute_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_cl_permute_workload_8cpp_source.xhtml">ClPermuteWorkload.cpp</a>.</p>
10232
10233<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00593">ClLayerSupport::IsPermuteSupported()</a>.</p>
10234<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</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#l00173">Types.hpp:173</a></div></div>
10235</div><!-- fragment -->
10236</div>
10237</div>
10238<a id="a8a21bb33f7f054ce7b48a8c7df9e6d4a"></a>
10239<h2 class="memtitle"><span class="permalink"><a href="#a8a21bb33f7f054ce7b48a8c7df9e6d4a">&#9670;&nbsp;</a></span>ClPooling2dWorkloadValidate()</h2>
10240
10241<div class="memitem">
10242<div class="memproto">
10243 <table class="memname">
10244 <tr>
10245 <td class="memname">arm_compute::Status ClPooling2dWorkloadValidate </td>
10246 <td>(</td>
10247 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10248 <td class="paramname"><em>input</em>, </td>
10249 </tr>
10250 <tr>
10251 <td class="paramkey"></td>
10252 <td></td>
10253 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10254 <td class="paramname"><em>output</em>, </td>
10255 </tr>
10256 <tr>
10257 <td class="paramkey"></td>
10258 <td></td>
10259 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
10260 <td class="paramname"><em>descriptor</em>&#160;</td>
10261 </tr>
10262 <tr>
10263 <td></td>
10264 <td>)</td>
10265 <td></td><td></td>
10266 </tr>
10267 </table>
10268</div><div class="memdoc">
10269
10270<p class="definition">Definition at line <a class="el" href="_cl_pooling2d_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_cl_pooling2d_workload_8cpp_source.xhtml">ClPooling2dWorkload.cpp</a>.</p>
10271
10272<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00601">ClLayerSupport::IsPooling2dSupported()</a>.</p>
10273<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
10274</div>
10275</div>
10276<a id="ae58d1f4437a779274037bc86efac9e26"></a>
10277<h2 class="memtitle"><span class="permalink"><a href="#ae58d1f4437a779274037bc86efac9e26">&#9670;&nbsp;</a></span>ClPreluWorkloadValidate()</h2>
10278
10279<div class="memitem">
10280<div class="memproto">
10281 <table class="memname">
10282 <tr>
10283 <td class="memname">arm_compute::Status ClPreluWorkloadValidate </td>
10284 <td>(</td>
10285 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10286 <td class="paramname"><em>input</em>, </td>
10287 </tr>
10288 <tr>
10289 <td class="paramkey"></td>
10290 <td></td>
10291 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10292 <td class="paramname"><em>alpha</em>, </td>
10293 </tr>
10294 <tr>
10295 <td class="paramkey"></td>
10296 <td></td>
10297 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10298 <td class="paramname"><em>output</em>&#160;</td>
10299 </tr>
10300 <tr>
10301 <td></td>
10302 <td>)</td>
10303 <td></td><td></td>
10304 </tr>
10305 </table>
10306</div><div class="memdoc">
10307
10308<p class="definition">Definition at line <a class="el" href="_cl_prelu_workload_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="_cl_prelu_workload_8cpp_source.xhtml">ClPreluWorkload.cpp</a>.</p>
10309
10310<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00609">ClLayerSupport::IsPreluSupported()</a>.</p>
10311<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div></div><!-- fragment -->
10312</div>
10313</div>
10314<a id="a5fb7fe07abfb2373103d842b47a24726"></a>
10315<h2 class="memtitle"><span class="permalink"><a href="#a5fb7fe07abfb2373103d842b47a24726">&#9670;&nbsp;</a></span>ClQuantizedLstmWorkloadValidate()</h2>
10316
10317<div class="memitem">
10318<div class="memproto">
10319 <table class="memname">
10320 <tr>
10321 <td class="memname">arm_compute::Status ClQuantizedLstmWorkloadValidate </td>
10322 <td>(</td>
10323 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10324 <td class="paramname"><em>input</em>, </td>
10325 </tr>
10326 <tr>
10327 <td class="paramkey"></td>
10328 <td></td>
10329 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10330 <td class="paramname"><em>previousCellStateIn</em>, </td>
10331 </tr>
10332 <tr>
10333 <td class="paramkey"></td>
10334 <td></td>
10335 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10336 <td class="paramname"><em>previousOutputIn</em>, </td>
10337 </tr>
10338 <tr>
10339 <td class="paramkey"></td>
10340 <td></td>
10341 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10342 <td class="paramname"><em>cellStateOut</em>, </td>
10343 </tr>
10344 <tr>
10345 <td class="paramkey"></td>
10346 <td></td>
10347 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10348 <td class="paramname"><em>output</em>, </td>
10349 </tr>
10350 <tr>
10351 <td class="paramkey"></td>
10352 <td></td>
10353 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
10354 <td class="paramname"><em>paramsInfo</em>&#160;</td>
10355 </tr>
10356 <tr>
10357 <td></td>
10358 <td>)</td>
10359 <td></td><td></td>
10360 </tr>
10361 </table>
10362</div><div class="memdoc">
10363
10364<p class="definition">Definition at line <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.xhtml">ClQuantizedLstmWorkload.cpp</a>.</p>
10365
10366<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00617">ClLayerSupport::IsQuantizedLstmSupported()</a>.</p>
10367<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// Inputs</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousCellStateInInfo = BuildArmComputeTensorInfo(previousCellStateIn);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclPreviousOutputInInfo = BuildArmComputeTensorInfo(previousOutputIn);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">// Outputs</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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="keywordflow">return</span> arm_compute::CLLSTMLayerQuantized::validate(&amp;aclInputInfo, &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;aclInputToForgetWeightsInfo, &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclInputToOutputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;aclRecurrentToForgetWeightsInfo, &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;aclRecurrentToOutputWeightsInfo, &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; &amp;aclForgetGateBiasInfo, &amp;aclCellBiasInfo, &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; &amp;aclPreviousCellStateInInfo, &amp;aclPreviousOutputInInfo,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; &amp;aclCellStateOutInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div></div><!-- fragment -->
10368</div>
10369</div>
10370<a id="a9c1b478e30a1e8a4ecac874cf15f13d4"></a>
10371<h2 class="memtitle"><span class="permalink"><a href="#a9c1b478e30a1e8a4ecac874cf15f13d4">&#9670;&nbsp;</a></span>ClQuantizeWorkloadValidate()</h2>
10372
10373<div class="memitem">
10374<div class="memproto">
10375 <table class="memname">
10376 <tr>
10377 <td class="memname">arm_compute::Status ClQuantizeWorkloadValidate </td>
10378 <td>(</td>
10379 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10380 <td class="paramname"><em>input</em>, </td>
10381 </tr>
10382 <tr>
10383 <td class="paramkey"></td>
10384 <td></td>
10385 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10386 <td class="paramname"><em>output</em>&#160;</td>
10387 </tr>
10388 <tr>
10389 <td></td>
10390 <td>)</td>
10391 <td></td><td></td>
10392 </tr>
10393 </table>
10394</div><div class="memdoc">
10395
10396<p class="definition">Definition at line <a class="el" href="_cl_quantize_workload_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_cl_quantize_workload_8cpp_source.xhtml">ClQuantizeWorkload.cpp</a>.</p>
10397
10398<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00635">ClLayerSupport::IsQuantizeSupported()</a>.</p>
10399<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> arm_compute::CLQuantizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
10400</div>
10401</div>
10402<a id="af5bb7a834a74983cbbc249785d0c392b"></a>
10403<h2 class="memtitle"><span class="permalink"><a href="#af5bb7a834a74983cbbc249785d0c392b">&#9670;&nbsp;</a></span>ClReshapeWorkloadValidate()</h2>
10404
10405<div class="memitem">
10406<div class="memproto">
10407 <table class="memname">
10408 <tr>
10409 <td class="memname">arm_compute::Status ClReshapeWorkloadValidate </td>
10410 <td>(</td>
10411 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10412 <td class="paramname"><em>input</em>, </td>
10413 </tr>
10414 <tr>
10415 <td class="paramkey"></td>
10416 <td></td>
10417 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10418 <td class="paramname"><em>output</em>&#160;</td>
10419 </tr>
10420 <tr>
10421 <td></td>
10422 <td>)</td>
10423 <td></td><td></td>
10424 </tr>
10425 </table>
10426</div><div class="memdoc">
10427
10428<p class="definition">Definition at line <a class="el" href="_cl_reshape_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_cl_reshape_workload_8cpp_source.xhtml">ClReshapeWorkload.cpp</a>.</p>
10429
10430<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00645">ClLayerSupport::IsReshapeSupported()</a>.</p>
10431<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::CLReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div></div><!-- fragment -->
10432</div>
10433</div>
10434<a id="a95b187d3c6b7b46f4fbdc60be69fc02c"></a>
10435<h2 class="memtitle"><span class="permalink"><a href="#a95b187d3c6b7b46f4fbdc60be69fc02c">&#9670;&nbsp;</a></span>ClResizeWorkloadValidate()</h2>
10436
10437<div class="memitem">
10438<div class="memproto">
10439 <table class="memname">
10440 <tr>
10441 <td class="memname">arm_compute::Status ClResizeWorkloadValidate </td>
10442 <td>(</td>
10443 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10444 <td class="paramname"><em>input</em>, </td>
10445 </tr>
10446 <tr>
10447 <td class="paramkey"></td>
10448 <td></td>
10449 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10450 <td class="paramname"><em>output</em>, </td>
10451 </tr>
10452 <tr>
10453 <td class="paramkey"></td>
10454 <td></td>
10455 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
10456 <td class="paramname"><em>descriptor</em>&#160;</td>
10457 </tr>
10458 <tr>
10459 <td></td>
10460 <td>)</td>
10461 <td></td><td></td>
10462 </tr>
10463 </table>
10464</div><div class="memdoc">
10465
10466<p class="definition">Definition at line <a class="el" href="_cl_resize_workload_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_cl_resize_workload_8cpp_source.xhtml">ClResizeWorkload.cpp</a>.</p>
10467
10468<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00654">ClLayerSupport::IsResizeSupported()</a>.</p>
10469<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</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; <span class="keywordflow">return</span> arm_compute::CLScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">true</span>,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; descriptor.m_BilinearAlignCorners);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.xhtml#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00126">ArmComputeUtils.hpp:126</a></div></div>
10470<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
10471</div><!-- fragment -->
10472</div>
10473</div>
10474<a id="a3f6f9f0d3567ae04b49ea88727845900"></a>
10475<h2 class="memtitle"><span class="permalink"><a href="#a3f6f9f0d3567ae04b49ea88727845900">&#9670;&nbsp;</a></span>ClRsqrtWorkloadValidate()</h2>
10476
10477<div class="memitem">
10478<div class="memproto">
10479 <table class="memname">
10480 <tr>
10481 <td class="memname">arm_compute::Status ClRsqrtWorkloadValidate </td>
10482 <td>(</td>
10483 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10484 <td class="paramname"><em>input</em>, </td>
10485 </tr>
10486 <tr>
10487 <td class="paramkey"></td>
10488 <td></td>
10489 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10490 <td class="paramname"><em>output</em>&#160;</td>
10491 </tr>
10492 <tr>
10493 <td></td>
10494 <td>)</td>
10495 <td></td><td></td>
10496 </tr>
10497 </table>
10498</div><div class="memdoc">
10499
10500<p class="definition">Definition at line <a class="el" href="_cl_rsqrt_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_cl_rsqrt_workload_8cpp_source.xhtml">ClRsqrtWorkload.cpp</a>.</p>
10501
10502<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00399">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
10503<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLRsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
10504</div>
10505</div>
10506<a id="a6d85d2806d0a90140832ad8113c1d350"></a>
10507<h2 class="memtitle"><span class="permalink"><a href="#a6d85d2806d0a90140832ad8113c1d350">&#9670;&nbsp;</a></span>ClSliceWorkloadValidate()</h2>
10508
10509<div class="memitem">
10510<div class="memproto">
10511 <table class="memname">
10512 <tr>
10513 <td class="memname">arm_compute::Status ClSliceWorkloadValidate </td>
10514 <td>(</td>
10515 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10516 <td class="paramname"><em>input</em>, </td>
10517 </tr>
10518 <tr>
10519 <td class="paramkey"></td>
10520 <td></td>
10521 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10522 <td class="paramname"><em>output</em>, </td>
10523 </tr>
10524 <tr>
10525 <td class="paramkey"></td>
10526 <td></td>
10527 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
10528 <td class="paramname"><em>descriptor</em>&#160;</td>
10529 </tr>
10530 <tr>
10531 <td></td>
10532 <td>)</td>
10533 <td></td><td></td>
10534 </tr>
10535 </table>
10536</div><div class="memdoc">
10537
10538<p class="definition">Definition at line <a class="el" href="_cl_slice_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_cl_slice_workload_8cpp_source.xhtml">ClSliceWorkload.cpp</a>.</p>
10539
10540<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00685">ClLayerSupport::IsSliceSupported()</a>.</p>
10541<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::tie(starts, ends) = <a class="code" href="namespacearmnn.xhtml#a460e01ad4cd0bfa6bde4eccaf0e77220">SetClSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSlice::validate(&amp;aclInput, &amp;aclOutput, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
10542<div class="ttc" id="namespacearmnn_xhtml_a460e01ad4cd0bfa6bde4eccaf0e77220"><div class="ttname"><a href="namespacearmnn.xhtml#a460e01ad4cd0bfa6bde4eccaf0e77220">armnn::SetClSliceData</a></div><div class="ttdeci">auto SetClSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00066">ClWorkloadUtils.hpp:66</a></div></div>
10543</div><!-- fragment -->
10544</div>
10545</div>
10546<a id="abc6f7e5fe77e5aed3f7842755dd34073"></a>
10547<h2 class="memtitle"><span class="permalink"><a href="#abc6f7e5fe77e5aed3f7842755dd34073">&#9670;&nbsp;</a></span>ClSoftmaxWorkloadValidate()</h2>
10548
10549<div class="memitem">
10550<div class="memproto">
10551 <table class="memname">
10552 <tr>
10553 <td class="memname">arm_compute::Status ClSoftmaxWorkloadValidate </td>
10554 <td>(</td>
10555 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10556 <td class="paramname"><em>input</em>, </td>
10557 </tr>
10558 <tr>
10559 <td class="paramkey"></td>
10560 <td></td>
10561 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10562 <td class="paramname"><em>output</em>, </td>
10563 </tr>
10564 <tr>
10565 <td class="paramkey"></td>
10566 <td></td>
10567 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
10568 <td class="paramname"><em>descriptor</em>&#160;</td>
10569 </tr>
10570 <tr>
10571 <td></td>
10572 <td>)</td>
10573 <td></td><td></td>
10574 </tr>
10575 </table>
10576</div><div class="memdoc">
10577
10578<p class="definition">Definition at line <a class="el" href="_cl_softmax_base_workload_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="_cl_softmax_base_workload_8cpp_source.xhtml">ClSoftmaxBaseWorkload.cpp</a>.</p>
10579
10580<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00693">ClLayerSupport::IsSoftmaxSupported()</a>.</p>
10581<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.xhtml#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00139">ArmComputeUtils.hpp:139</a></div></div>
10582</div><!-- fragment -->
10583</div>
10584</div>
10585<a id="a534b28fd4b345bbc938d055ff5b8970f"></a>
10586<h2 class="memtitle"><span class="permalink"><a href="#a534b28fd4b345bbc938d055ff5b8970f">&#9670;&nbsp;</a></span>ClSpaceToBatchNdWorkloadValidate()</h2>
10587
10588<div class="memitem">
10589<div class="memproto">
10590 <table class="memname">
10591 <tr>
10592 <td class="memname">arm_compute::Status ClSpaceToBatchNdWorkloadValidate </td>
10593 <td>(</td>
10594 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10595 <td class="paramname"><em>input</em>, </td>
10596 </tr>
10597 <tr>
10598 <td class="paramkey"></td>
10599 <td></td>
10600 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10601 <td class="paramname"><em>output</em>, </td>
10602 </tr>
10603 <tr>
10604 <td class="paramkey"></td>
10605 <td></td>
10606 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
10607 <td class="paramname"><em>descriptor</em>&#160;</td>
10608 </tr>
10609 <tr>
10610 <td></td>
10611 <td>)</td>
10612 <td></td><td></td>
10613 </tr>
10614 </table>
10615</div><div class="memdoc">
10616
10617<p class="definition">Definition at line <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.xhtml#l00023">23</a> of file <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.xhtml">ClSpaceToBatchNdWorkload.cpp</a>.</p>
10618
10619<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00701">ClLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
10620<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</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; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; int32_t blockHeight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; int32_t blockWidth = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</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; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</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; <span class="keywordflow">return</span> arm_compute::CLSpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; blockWidth,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; blockHeight,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
10621</div><!-- fragment -->
10622</div>
10623</div>
10624<a id="a5f81bc4e5533cfe99932865bd102735c"></a>
10625<h2 class="memtitle"><span class="permalink"><a href="#a5f81bc4e5533cfe99932865bd102735c">&#9670;&nbsp;</a></span>ClSpaceToDepthWorkloadValidate()</h2>
10626
10627<div class="memitem">
10628<div class="memproto">
10629 <table class="memname">
10630 <tr>
10631 <td class="memname">arm_compute::Status ClSpaceToDepthWorkloadValidate </td>
10632 <td>(</td>
10633 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10634 <td class="paramname"><em>input</em>, </td>
10635 </tr>
10636 <tr>
10637 <td class="paramkey"></td>
10638 <td></td>
10639 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10640 <td class="paramname"><em>output</em>, </td>
10641 </tr>
10642 <tr>
10643 <td class="paramkey"></td>
10644 <td></td>
10645 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
10646 <td class="paramname"><em>desc</em>&#160;</td>
10647 </tr>
10648 <tr>
10649 <td></td>
10650 <td>)</td>
10651 <td></td><td></td>
10652 </tr>
10653 </table>
10654</div><div class="memdoc">
10655
10656<p class="definition">Definition at line <a class="el" href="_cl_space_to_depth_workload_8cpp_source.xhtml#l00044">44</a> of file <a class="el" href="_cl_space_to_depth_workload_8cpp_source.xhtml">ClSpaceToDepthWorkload.cpp</a>.</p>
10657
10658<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
10659
10660<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00713">ClLayerSupport::IsSpaceToDepthSupported()</a>.</p>
10661<div class="fragment"><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = desc.m_DataLayout;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; int32_t blockSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockSize);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLSpaceToDepthLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; blockSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
10662<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
10663<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
10664</div><!-- fragment -->
10665</div>
10666</div>
10667<a id="a3ac8a60f837b19b20987e4fd238ce0cd"></a>
10668<h2 class="memtitle"><span class="permalink"><a href="#a3ac8a60f837b19b20987e4fd238ce0cd">&#9670;&nbsp;</a></span>ClSplitterWorkloadValidate()</h2>
10669
10670<div class="memitem">
10671<div class="memproto">
10672 <table class="memname">
10673 <tr>
10674 <td class="memname">arm_compute::Status ClSplitterWorkloadValidate </td>
10675 <td>(</td>
10676 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10677 <td class="paramname"><em>input</em>, </td>
10678 </tr>
10679 <tr>
10680 <td class="paramkey"></td>
10681 <td></td>
10682 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
10683 <td class="paramname"><em>outputs</em>, </td>
10684 </tr>
10685 <tr>
10686 <td class="paramkey"></td>
10687 <td></td>
10688 <td class="paramtype">unsigned int&#160;</td>
10689 <td class="paramname"><em>splitAxis</em>&#160;</td>
10690 </tr>
10691 <tr>
10692 <td></td>
10693 <td>)</td>
10694 <td></td><td></td>
10695 </tr>
10696 </table>
10697</div><div class="memdoc">
10698
10699<p class="definition">Definition at line <a class="el" href="_cl_splitter_workload_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_cl_splitter_workload_8cpp_source.xhtml">ClSplitterWorkload.cpp</a>.</p>
10700
10701<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00736">ClLayerSupport::IsSplitterSupported()</a>.</p>
10702<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</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="keywordtype">size_t</span> numOutputs = outputs.size();</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; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</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;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::CLSplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
10703</div>
10704</div>
10705<a id="a8c9fec997dbb5db4cdb433c36d075782"></a>
10706<h2 class="memtitle"><span class="permalink"><a href="#a8c9fec997dbb5db4cdb433c36d075782">&#9670;&nbsp;</a></span>ClStackWorkloadValidate()</h2>
10707
10708<div class="memitem">
10709<div class="memproto">
10710 <table class="memname">
10711 <tr>
10712 <td class="memname">arm_compute::Status ClStackWorkloadValidate </td>
10713 <td>(</td>
10714 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
10715 <td class="paramname"><em>inputs</em>, </td>
10716 </tr>
10717 <tr>
10718 <td class="paramkey"></td>
10719 <td></td>
10720 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10721 <td class="paramname"><em>output</em>, </td>
10722 </tr>
10723 <tr>
10724 <td class="paramkey"></td>
10725 <td></td>
10726 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
10727 <td class="paramname"><em>descriptor</em>&#160;</td>
10728 </tr>
10729 <tr>
10730 <td></td>
10731 <td>)</td>
10732 <td></td><td></td>
10733 </tr>
10734 </table>
10735</div><div class="memdoc">
10736
10737<p class="definition">Definition at line <a class="el" href="_cl_stack_workload_8cpp_source.xhtml#l00030">30</a> of file <a class="el" href="_cl_stack_workload_8cpp_source.xhtml">ClStackWorkload.cpp</a>.</p>
10738
10739<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00769">ClLayerSupport::IsStackSupported()</a>.</p>
10740<div class="fragment"><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; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; aclInputInfo = BuildArmComputeTensorInfo(*input);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; aclInputPtrs.emplace_back(&amp;aclInputInfo);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div></div><!-- fragment -->
10741</div>
10742</div>
10743<a id="a157e0508f6d6d08e3ca4cf6c661242e6"></a>
10744<h2 class="memtitle"><span class="permalink"><a href="#a157e0508f6d6d08e3ca4cf6c661242e6">&#9670;&nbsp;</a></span>ClStridedSliceWorkloadValidate()</h2>
10745
10746<div class="memitem">
10747<div class="memproto">
10748 <table class="memname">
10749 <tr>
10750 <td class="memname">arm_compute::Status ClStridedSliceWorkloadValidate </td>
10751 <td>(</td>
10752 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10753 <td class="paramname"><em>input</em>, </td>
10754 </tr>
10755 <tr>
10756 <td class="paramkey"></td>
10757 <td></td>
10758 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10759 <td class="paramname"><em>output</em>, </td>
10760 </tr>
10761 <tr>
10762 <td class="paramkey"></td>
10763 <td></td>
10764 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
10765 <td class="paramname"><em>descriptor</em>&#160;</td>
10766 </tr>
10767 <tr>
10768 <td></td>
10769 <td>)</td>
10770 <td></td><td></td>
10771 </tr>
10772 </table>
10773</div><div class="memdoc">
10774
10775<p class="definition">Definition at line <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00026">26</a> of file <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml">ClStridedSliceWorkload.cpp</a>.</p>
10776
10777<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00781">ClLayerSupport::IsStridedSliceSupported()</a>.</p>
10778<div class="fragment"><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; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</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; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.xhtml#a6d4bdf4368a1422943f8f2b1740ec491">SetClStridedSliceData</a>(descriptor.m_Begin, descriptor.m_End, descriptor.m_Stride);</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; <span class="keyword">auto</span> numDimensions = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> arm_compute::CLStridedSlice::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; starts,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; ends,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; strides,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; begin_mask,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; end_mask,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
10779<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
10780<div class="ttc" id="namespacearmnn_xhtml_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00192">WorkloadUtils.cpp:192</a></div></div>
10781<div class="ttc" id="namespacearmnn_xhtml_a6d4bdf4368a1422943f8f2b1740ec491"><div class="ttname"><a href="namespacearmnn.xhtml#a6d4bdf4368a1422943f8f2b1740ec491">armnn::SetClStridedSliceData</a></div><div class="ttdeci">auto SetClStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00045">ClWorkloadUtils.hpp:45</a></div></div>
10782</div><!-- fragment -->
10783</div>
10784</div>
10785<a id="a3bbbf958387c788549b0d8481232875f"></a>
10786<h2 class="memtitle"><span class="permalink"><a href="#a3bbbf958387c788549b0d8481232875f">&#9670;&nbsp;</a></span>ClSubtractionValidate()</h2>
10787
10788<div class="memitem">
10789<div class="memproto">
10790 <table class="memname">
10791 <tr>
10792 <td class="memname">arm_compute::Status ClSubtractionValidate </td>
10793 <td>(</td>
10794 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10795 <td class="paramname"><em>input0</em>, </td>
10796 </tr>
10797 <tr>
10798 <td class="paramkey"></td>
10799 <td></td>
10800 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10801 <td class="paramname"><em>input1</em>, </td>
10802 </tr>
10803 <tr>
10804 <td class="paramkey"></td>
10805 <td></td>
10806 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10807 <td class="paramname"><em>output</em>&#160;</td>
10808 </tr>
10809 <tr>
10810 <td></td>
10811 <td>)</td>
10812 <td></td><td></td>
10813 </tr>
10814 </table>
10815</div><div class="memdoc">
10816
10817<p class="definition">Definition at line <a class="el" href="_cl_subtraction_workload_8cpp_source.xhtml#l00038">38</a> of file <a class="el" href="_cl_subtraction_workload_8cpp_source.xhtml">ClSubtractionWorkload.cpp</a>.</p>
10818
10819<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00793">ClLayerSupport::IsSubtractionSupported()</a>.</p>
10820<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0Info = BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1Info = BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</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"> 46</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::CLArithmeticSubtraction::validate(&amp;aclInput0Info,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; &amp;aclInput1Info,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; g_AclConvertPolicy);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
10821</div><!-- fragment -->
10822</div>
10823</div>
10824<a id="ac86fc56b9a27576bfe930a7012a402d5"></a>
10825<h2 class="memtitle"><span class="permalink"><a href="#ac86fc56b9a27576bfe930a7012a402d5">&#9670;&nbsp;</a></span>ClTensorHandleFactoryId()</h2>
10826
10827<div class="memitem">
10828<div class="memproto">
10829 <table class="memname">
10830 <tr>
10831 <td class="memname">constexpr const char* armnn::ClTensorHandleFactoryId </td>
10832 <td>(</td>
10833 <td class="paramname"></td><td>)</td>
10834 <td></td>
10835 </tr>
10836 </table>
10837</div><div class="memdoc">
10838
10839<p class="definition">Definition at line <a class="el" href="_cl_tensor_handle_factory_8hpp_source.xhtml#l00015">15</a> of file <a class="el" href="_cl_tensor_handle_factory_8hpp_source.xhtml">ClTensorHandleFactory.hpp</a>.</p>
10840
10841<p class="reference">Referenced by <a class="el" href="_cl_tensor_handle_factory_8cpp_source.xhtml#l00082">ClTensorHandleFactory::GetIdStatic()</a>.</p>
10842<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Cl/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
10843</div>
10844</div>
10845<a id="a719ea81939d6a25f8636b52c59165d66"></a>
10846<h2 class="memtitle"><span class="permalink"><a href="#a719ea81939d6a25f8636b52c59165d66">&#9670;&nbsp;</a></span>ClTransposeConvolution2dWorkloadValidate()</h2>
10847
10848<div class="memitem">
10849<div class="memproto">
10850 <table class="memname">
10851 <tr>
10852 <td class="memname">arm_compute::Status ClTransposeConvolution2dWorkloadValidate </td>
10853 <td>(</td>
10854 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10855 <td class="paramname"><em>input</em>, </td>
10856 </tr>
10857 <tr>
10858 <td class="paramkey"></td>
10859 <td></td>
10860 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10861 <td class="paramname"><em>output</em>, </td>
10862 </tr>
10863 <tr>
10864 <td class="paramkey"></td>
10865 <td></td>
10866 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
10867 <td class="paramname"><em>descriptor</em>, </td>
10868 </tr>
10869 <tr>
10870 <td class="paramkey"></td>
10871 <td></td>
10872 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10873 <td class="paramname"><em>weights</em>, </td>
10874 </tr>
10875 <tr>
10876 <td class="paramkey"></td>
10877 <td></td>
10878 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
10879 <td class="paramname"><em>biases</em>&#160;</td>
10880 </tr>
10881 <tr>
10882 <td></td>
10883 <td>)</td>
10884 <td></td><td></td>
10885 </tr>
10886 </table>
10887</div><div class="memdoc">
10888
10889<p class="definition">Definition at line <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.xhtml#l00026">26</a> of file <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.xhtml">ClTransposeConvolution2dWorkload.cpp</a>.</p>
10890
10891<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00805">ClLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
10892<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</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; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</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; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</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"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo padStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::CLDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; padStrideInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
10893</div>
10894</div>
10895<a id="a1c3a39fbecb45be0bb15dd665c9be61d"></a>
10896<h2 class="memtitle"><span class="permalink"><a href="#a1c3a39fbecb45be0bb15dd665c9be61d">&#9670;&nbsp;</a></span>ClTransposeWorkloadValidate()</h2>
10897
10898<div class="memitem">
10899<div class="memproto">
10900 <table class="memname">
10901 <tr>
10902 <td class="memname">arm_compute::Status ClTransposeWorkloadValidate </td>
10903 <td>(</td>
10904 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10905 <td class="paramname"><em>input</em>, </td>
10906 </tr>
10907 <tr>
10908 <td class="paramkey"></td>
10909 <td></td>
10910 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
10911 <td class="paramname"><em>output</em>, </td>
10912 </tr>
10913 <tr>
10914 <td class="paramkey"></td>
10915 <td></td>
10916 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;&#160;</td>
10917 <td class="paramname"><em>descriptor</em>&#160;</td>
10918 </tr>
10919 <tr>
10920 <td></td>
10921 <td>)</td>
10922 <td></td><td></td>
10923 </tr>
10924 </table>
10925</div><div class="memdoc">
10926
10927<p class="definition">Definition at line <a class="el" href="_cl_transpose_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_cl_transpose_workload_8cpp_source.xhtml">ClTransposeWorkload.cpp</a>.</p>
10928
10929<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00821">ClLayerSupport::IsTransposeSupported()</a>.</p>
10930<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::CLPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; armcomputetensorutils::BuildArmComputeTransposeVector(mappings));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</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#l00173">Types.hpp:173</a></div></div>
10931</div><!-- fragment -->
10932</div>
10933</div>
10934<a id="a5d94c2125c725df5b619d16db9d4a8e9"></a>
10935<h2 class="memtitle"><span class="permalink"><a href="#a5d94c2125c725df5b619d16db9d4a8e9">&#9670;&nbsp;</a></span>Combine() <span class="overload">[1/2]</span></h2>
10936
10937<div class="memitem">
10938<div class="memproto">
10939 <table class="memname">
10940 <tr>
10941 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
10942 <td>(</td>
10943 <td class="paramtype">Arg&#160;</td>
10944 <td class="paramname"><em>sourceA</em>, </td>
10945 </tr>
10946 <tr>
10947 <td class="paramkey"></td>
10948 <td></td>
10949 <td class="paramtype">Arg&#160;</td>
10950 <td class="paramname"><em>sourceB</em>&#160;</td>
10951 </tr>
10952 <tr>
10953 <td></td>
10954 <td>)</td>
10955 <td></td><td></td>
10956 </tr>
10957 </table>
10958</div><div class="memdoc">
10959
10960<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.xhtml#l00036">36</a> of file <a class="el" href="_memory_sources_8hpp_source.xhtml">MemorySources.hpp</a>.</p>
10961
10962<p class="reference">Referenced by <a class="el" href="_memory_sources_8hpp_source.xhtml#l00042">Combine()</a>.</p>
10963<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(sourceA) | static_cast&lt;MemorySourceFlags&gt;(sourceB);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00021">MemorySources.hpp:21</a></div></div>
10964</div><!-- fragment -->
10965</div>
10966</div>
10967<a id="ae91e1849e95350c8e50912a217999eac"></a>
10968<h2 class="memtitle"><span class="permalink"><a href="#ae91e1849e95350c8e50912a217999eac">&#9670;&nbsp;</a></span>Combine() <span class="overload">[2/2]</span></h2>
10969
10970<div class="memitem">
10971<div class="memproto">
10972 <table class="memname">
10973 <tr>
10974 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
10975 <td>(</td>
10976 <td class="paramtype">Arg&#160;</td>
10977 <td class="paramname"><em>source</em>, </td>
10978 </tr>
10979 <tr>
10980 <td class="paramkey"></td>
10981 <td></td>
10982 <td class="paramtype">Args...&#160;</td>
10983 <td class="paramname"><em>rest</em>&#160;</td>
10984 </tr>
10985 <tr>
10986 <td></td>
10987 <td>)</td>
10988 <td></td><td></td>
10989 </tr>
10990 </table>
10991</div><div class="memdoc">
10992
10993<p class="definition">Definition at line <a class="el" href="_memory_sources_8hpp_source.xhtml#l00042">42</a> of file <a class="el" href="_memory_sources_8hpp_source.xhtml">MemorySources.hpp</a>.</p>
10994
10995<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.xhtml#l00036">Combine()</a>.</p>
10996<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a><span class="keyword">&gt;</span>(source) | <a class="code" href="namespacearmnn.xhtml#ae91e1849e95350c8e50912a217999eac">Combine</a>(rest...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae91e1849e95350c8e50912a217999eac"><div class="ttname"><a href="namespacearmnn.xhtml#ae91e1849e95350c8e50912a217999eac">armnn::Combine</a></div><div class="ttdeci">MemorySourceFlags Combine(Arg source, Args... rest)</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00042">MemorySources.hpp:42</a></div></div>
10997<div class="ttc" id="namespacearmnn_xhtml_a5b05f3b7208ec7cea3338e30057c0bac"><div class="ttname"><a href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">armnn::MemorySourceFlags</a></div><div class="ttdeci">unsigned int MemorySourceFlags</div><div class="ttdef"><b>Definition:</b> <a href="_memory_sources_8hpp_source.xhtml#l00021">MemorySources.hpp:21</a></div></div>
10998</div><!-- fragment -->
10999</div>
11000</div>
11001<a id="a238a74871f634b778176e5dc8391888a"></a>
11002<h2 class="memtitle"><span class="permalink"><a href="#a238a74871f634b778176e5dc8391888a">&#9670;&nbsp;</a></span>CompatibleTypes()</h2>
11003
11004<div class="memitem">
11005<div class="memproto">
11006 <table class="memname">
11007 <tr>
11008 <td class="memname">bool armnn::CompatibleTypes </td>
11009 <td>(</td>
11010 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11011 <td class="paramname"></td><td>)</td>
11012 <td></td>
11013 </tr>
11014 </table>
11015</div><div class="memdoc">
11016
11017<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00015">15</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11018<div class="fragment"><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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;}</div></div><!-- fragment -->
11019</div>
11020</div>
11021<a id="a7296af8a86f22ef7f144dc02c4c94324"></a>
11022<h2 class="memtitle"><span class="permalink"><a href="#a7296af8a86f22ef7f144dc02c4c94324">&#9670;&nbsp;</a></span>CompatibleTypes< float >()</h2>
11023
11024<div class="memitem">
11025<div class="memproto">
11026<table class="mlabels">
11027 <tr>
11028 <td class="mlabels-left">
11029 <table class="memname">
11030 <tr>
11031 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; float &gt; </td>
11032 <td>(</td>
11033 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11034 <td class="paramname"><em>dataType</em></td><td>)</td>
11035 <td></td>
11036 </tr>
11037 </table>
11038 </td>
11039 <td class="mlabels-right">
11040<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11041 </tr>
11042</table>
11043</div><div class="memdoc">
11044
11045<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11046
11047<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
11048<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float32;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
11049</div>
11050</div>
11051<a id="a7b224e4c135fa1fdb3e54dfe945e07f8"></a>
11052<h2 class="memtitle"><span class="permalink"><a href="#a7b224e4c135fa1fdb3e54dfe945e07f8">&#9670;&nbsp;</a></span>CompatibleTypes< Half >()</h2>
11053
11054<div class="memitem">
11055<div class="memproto">
11056<table class="mlabels">
11057 <tr>
11058 <td class="mlabels-left">
11059 <table class="memname">
11060 <tr>
11061 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
11062 <td>(</td>
11063 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11064 <td class="paramname"><em>dataType</em></td><td>)</td>
11065 <td></td>
11066 </tr>
11067 </table>
11068 </td>
11069 <td class="mlabels-right">
11070<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11071 </tr>
11072</table>
11073</div><div class="memdoc">
11074
11075<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00027">27</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11076
11077<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>.</p>
11078<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Float16;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div></div><!-- fragment -->
11079</div>
11080</div>
11081<a id="a6a0a86fe227d22c1cf7381798ad8550f"></a>
11082<h2 class="memtitle"><span class="permalink"><a href="#a6a0a86fe227d22c1cf7381798ad8550f">&#9670;&nbsp;</a></span>CompatibleTypes< int16_t >()</h2>
11083
11084<div class="memitem">
11085<div class="memproto">
11086<table class="mlabels">
11087 <tr>
11088 <td class="mlabels-left">
11089 <table class="memname">
11090 <tr>
11091 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int16_t &gt; </td>
11092 <td>(</td>
11093 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11094 <td class="paramname"><em>dataType</em></td><td>)</td>
11095 <td></td>
11096 </tr>
11097 </table>
11098 </td>
11099 <td class="mlabels-right">
11100<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11101 </tr>
11102</table>
11103</div><div class="memdoc">
11104
11105<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00049">49</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11106
11107<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
11108<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS16;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div></div><!-- fragment -->
11109</div>
11110</div>
11111<a id="a000bb59f20fa937e2acff1c2aaba7944"></a>
11112<h2 class="memtitle"><span class="permalink"><a href="#a000bb59f20fa937e2acff1c2aaba7944">&#9670;&nbsp;</a></span>CompatibleTypes< int32_t >()</h2>
11113
11114<div class="memitem">
11115<div class="memproto">
11116<table class="mlabels">
11117 <tr>
11118 <td class="mlabels-left">
11119 <table class="memname">
11120 <tr>
11121 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int32_t &gt; </td>
11122 <td>(</td>
11123 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11124 <td class="paramname"><em>dataType</em></td><td>)</td>
11125 <td></td>
11126 </tr>
11127 </table>
11128 </td>
11129 <td class="mlabels-right">
11130<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11131 </tr>
11132</table>
11133</div><div class="memdoc">
11134
11135<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00055">55</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11136
11137<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
11138<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Signed32;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
11139</div>
11140</div>
11141<a id="a2bcd446605a7ee354be1038983358e04"></a>
11142<h2 class="memtitle"><span class="permalink"><a href="#a2bcd446605a7ee354be1038983358e04">&#9670;&nbsp;</a></span>CompatibleTypes< int8_t >()</h2>
11143
11144<div class="memitem">
11145<div class="memproto">
11146<table class="mlabels">
11147 <tr>
11148 <td class="mlabels-left">
11149 <table class="memname">
11150 <tr>
11151 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int8_t &gt; </td>
11152 <td>(</td>
11153 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11154 <td class="paramname"><em>dataType</em></td><td>)</td>
11155 <td></td>
11156 </tr>
11157 </table>
11158 </td>
11159 <td class="mlabels-right">
11160<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11161 </tr>
11162</table>
11163</div><div class="memdoc">
11164
11165<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00039">39</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11166
11167<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
11168<div class="fragment"><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QSymmS8</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; || dataType == DataType::QuantizedSymm8PerAxis</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; || dataType == DataType::QAsymmS8;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
11169<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
11170</div><!-- fragment -->
11171</div>
11172</div>
11173<a id="ad23bcbfd1876f1ae11c926d0e3e8c3e5"></a>
11174<h2 class="memtitle"><span class="permalink"><a href="#ad23bcbfd1876f1ae11c926d0e3e8c3e5">&#9670;&nbsp;</a></span>CompatibleTypes< uint8_t >()</h2>
11175
11176<div class="memitem">
11177<div class="memproto">
11178<table class="mlabels">
11179 <tr>
11180 <td class="mlabels-left">
11181 <table class="memname">
11182 <tr>
11183 <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; uint8_t &gt; </td>
11184 <td>(</td>
11185 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
11186 <td class="paramname"><em>dataType</em></td><td>)</td>
11187 <td></td>
11188 </tr>
11189 </table>
11190 </td>
11191 <td class="mlabels-right">
11192<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11193 </tr>
11194</table>
11195</div><div class="memdoc">
11196
11197<p class="definition">Definition at line <a class="el" href="_compatible_types_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_compatible_types_8hpp_source.xhtml">CompatibleTypes.hpp</a>.</p>
11198
11199<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
11200<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> dataType == DataType::Boolean || dataType == DataType::QAsymmU8;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div></div><!-- fragment -->
11201</div>
11202</div>
11203<a id="a6fff4b4b1b5d4d37c9cf53d0e31c05dd"></a>
11204<h2 class="memtitle"><span class="permalink"><a href="#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">&#9670;&nbsp;</a></span>CompleteLeakyReluNetwork()</h2>
11205
11206<div class="memitem">
11207<div class="memproto">
11208 <table class="memname">
11209 <tr>
11210 <td class="memname">void armnn::CompleteLeakyReluNetwork </td>
11211 <td>(</td>
11212 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
11213 <td class="paramname"><em>network</em>, </td>
11214 </tr>
11215 <tr>
11216 <td class="paramkey"></td>
11217 <td></td>
11218 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *&#160;</td>
11219 <td class="paramname"><em>activation</em>, </td>
11220 </tr>
11221 <tr>
11222 <td class="paramkey"></td>
11223 <td></td>
11224 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *&#160;</td>
11225 <td class="paramname"><em>layerUnderTest</em>, </td>
11226 </tr>
11227 <tr>
11228 <td class="paramkey"></td>
11229 <td></td>
11230 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
11231 <td class="paramname"><em>info</em>&#160;</td>
11232 </tr>
11233 <tr>
11234 <td></td>
11235 <td>)</td>
11236 <td></td><td></td>
11237 </tr>
11238 </table>
11239</div><div class="memdoc">
11240
11241<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01604">1604</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
11242
11243<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.xhtml#ad8582fba2ebeb65da43a56bc22d4f88b">INetwork::AddOutputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
11244
11245<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01620">BOOST_AUTO_TEST_CASE()</a>.</p>
11246<div class="fragment"><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;{</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="comment">// Add the output Layer</span></div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(3);</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; activation-&gt;GetOutputSlot(0).Connect(layerUnderTest-&gt;GetInputSlot(0));</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; layerUnderTest-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;}</div></div><!-- fragment -->
11247</div>
11248</div>
11249<a id="aa70ebe7b7898fe69ce24db803caa373e"></a>
11250<h2 class="memtitle"><span class="permalink"><a href="#aa70ebe7b7898fe69ce24db803caa373e">&#9670;&nbsp;</a></span>ComputeSoftmaxAclAxis()</h2>
11251
11252<div class="memitem">
11253<div class="memproto">
11254<table class="mlabels">
11255 <tr>
11256 <td class="mlabels-left">
11257 <table class="memname">
11258 <tr>
11259 <td class="memname">unsigned int armnn::ComputeSoftmaxAclAxis </td>
11260 <td>(</td>
11261 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
11262 <td class="paramname"><em>softmaxDesc</em>, </td>
11263 </tr>
11264 <tr>
11265 <td class="paramkey"></td>
11266 <td></td>
11267 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
11268 <td class="paramname"><em>tensor</em>&#160;</td>
11269 </tr>
11270 <tr>
11271 <td></td>
11272 <td>)</td>
11273 <td></td><td></td>
11274 </tr>
11275 </table>
11276 </td>
11277 <td class="mlabels-right">
11278<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11279 </tr>
11280</table>
11281</div><div class="memdoc">
11282
11283<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00139">139</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11284
11285<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00138">SoftmaxDescriptor::m_Axis</a>.</p>
11286
11287<p class="reference">Referenced by <a class="el" href="_cl_softmax_float_workload_8cpp_source.xhtml#l00016">ClSoftmaxFloatWorkload::ClSoftmaxFloatWorkload()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.xhtml#l00016">ClSoftmaxUint8Workload::ClSoftmaxUint8Workload()</a>, <a class="el" href="_neon_softmax_float_workload_8cpp_source.xhtml#l00016">NeonSoftmaxFloatWorkload::NeonSoftmaxFloatWorkload()</a>, and <a class="el" href="_neon_softmax_uint8_workload_8cpp_source.xhtml#l00016">NeonSoftmaxUint8Workload::NeonSoftmaxUint8Workload()</a>.</p>
11288<div class="fragment"><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// Detect the Android default value of -1 and return the ACL default value of 1.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span> (softmaxDesc.m_Axis == -1)</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; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = tensor.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; BOOST_ASSERT(dim != 0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// Currently ArmNN support axis 1.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> dim - 1;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00092">Tensor.hpp:92</a></div></div>
11289</div><!-- fragment -->
11290</div>
11291</div>
11292<a id="a8cbabc875597b3bed0ccdc0adb289fde"></a>
11293<h2 class="memtitle"><span class="permalink"><a href="#a8cbabc875597b3bed0ccdc0adb289fde">&#9670;&nbsp;</a></span>ComputeSplitAxis()</h2>
11294
11295<div class="memitem">
11296<div class="memproto">
11297<table class="mlabels">
11298 <tr>
11299 <td class="mlabels-left">
11300 <table class="memname">
11301 <tr>
11302 <td class="memname">std::set&lt;unsigned int&gt; armnn::ComputeSplitAxis </td>
11303 <td>(</td>
11304 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;&#160;</td>
11305 <td class="paramname"><em>desc</em>, </td>
11306 </tr>
11307 <tr>
11308 <td class="paramkey"></td>
11309 <td></td>
11310 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
11311 <td class="paramname"><em>input</em>&#160;</td>
11312 </tr>
11313 <tr>
11314 <td></td>
11315 <td>)</td>
11316 <td></td><td></td>
11317 </tr>
11318 </table>
11319 </td>
11320 <td class="mlabels-right">
11321<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11322 </tr>
11323</table>
11324</div><div class="memdoc">
11325
11326<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00155">155</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11327
11328<p class="reference">References <a class="el" href="_descriptors_8cpp_source.xhtml#l00292">ViewsDescriptor::GetNumDimensions()</a>, <a class="el" href="_descriptors_8cpp_source.xhtml#l00287">ViewsDescriptor::GetNumViews()</a>, and <a class="el" href="_descriptors_8cpp_source.xhtml#l00332">ViewsDescriptor::GetViewSizes()</a>.</p>
11329
11330<p class="reference">Referenced by <a class="el" href="_cl_splitter_workload_8cpp_source.xhtml#l00055">ClSplitterWorkload::ClSplitterWorkload()</a>, <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00736">ClLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00719">NeonLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_splitter_workload_8cpp_source.xhtml#l00055">NeonSplitterWorkload::NeonSplitterWorkload()</a>.</p>
11331<div class="fragment"><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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSplit = desc.<a class="code" href="structarmnn_1_1_views_descriptor.xhtml#a35546e7b56e6e972a495b48748478ede">GetNumViews</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = desc.<a class="code" href="structarmnn_1_1_views_descriptor.xhtml#a78e8266be865fdd92cadd04d6e25ae1f">GetNumDimensions</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::set&lt;unsigned int&gt; splitAxis;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numSplit; ++i)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimIdx = 0; dimIdx &lt; numDimensions; ++dimIdx)</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="keywordflow">if</span> (desc.<a class="code" href="structarmnn_1_1_views_descriptor.xhtml#a3c1ab47a0a319413b3a4b5757ed5b80b">GetViewSizes</a>(i)[dimIdx] != input[dimIdx])</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; splitAxis.insert(dimIdx);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> splitAxis;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_views_descriptor_xhtml_a78e8266be865fdd92cadd04d6e25ae1f"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.xhtml#a78e8266be865fdd92cadd04d6e25ae1f">armnn::ViewsDescriptor::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#l00292">Descriptors.cpp:292</a></div></div>
11332<div class="ttc" id="structarmnn_1_1_views_descriptor_xhtml_a35546e7b56e6e972a495b48748478ede"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.xhtml#a35546e7b56e6e972a495b48748478ede">armnn::ViewsDescriptor::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#l00287">Descriptors.cpp:287</a></div></div>
11333<div class="ttc" id="structarmnn_1_1_views_descriptor_xhtml_a3c1ab47a0a319413b3a4b5757ed5b80b"><div class="ttname"><a href="structarmnn_1_1_views_descriptor.xhtml#a3c1ab47a0a319413b3a4b5757ed5b80b">armnn::ViewsDescriptor::GetViewSizes</a></div><div class="ttdeci">const uint32_t * GetViewSizes(uint32_t idx) const</div><div class="ttdoc">Get the view sizes at the int value idx. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00332">Descriptors.cpp:332</a></div></div>
11334</div><!-- fragment -->
11335</div>
11336</div>
11337<a id="a1deafe1b2777bcaadefe2371b3ebbb27"></a>
11338<h2 class="memtitle"><span class="permalink"><a href="#a1deafe1b2777bcaadefe2371b3ebbb27">&#9670;&nbsp;</a></span>Concatenate()</h2>
11339
11340<div class="memitem">
11341<div class="memproto">
11342 <table class="memname">
11343 <tr>
11344 <td class="memname">void Concatenate </td>
11345 <td>(</td>
11346 <td class="paramtype">const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> &amp;&#160;</td>
11347 <td class="paramname"><em>data</em></td><td>)</td>
11348 <td></td>
11349 </tr>
11350 </table>
11351</div><div class="memdoc">
11352
11353<p class="definition">Definition at line <a class="el" href="_concatenate_8cpp_source.xhtml#l00014">14</a> of file <a class="el" href="_concatenate_8cpp_source.xhtml">Concatenate.cpp</a>.</p>
11354
11355<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00110">ConcatQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00115">ConcatQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.xhtml#l00018">MaxNumOfTensorDimensions</a>.</p>
11356
11357<p class="reference">Referenced by <a class="el" href="_ref_concat_workload_8cpp_source.xhtml#l00015">RefConcatWorkload::Execute()</a>.</p>
11358<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo0 = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr = MakeEncoder&lt;float&gt;(outputInfo0, data.m_Outputs[0]-&gt;Map());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0 ; index &lt; outputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = outputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; outputInfo0.GetNumDimensions(); i++)</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; dimensionStride /= outputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</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;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</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; ConcatQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</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; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(inputInfo.GetNumDimensions() == outputInfo0.GetNumDimensions());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + inputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inIndex = 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = inputInfo.GetNumDimensions(); i-- &gt; 0;)</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; inIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; dimensionStride *= inputInfo.GetShape()[i];</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; decoder += inIndex;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; encoder.Set(decoder.Get());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">//What should we do if input views overlap on the output tensor?</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">//We could error, take the average, or shm else...</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">//For now just stop after finding first view (input) that matches.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; ++encoder;</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;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
11359<div class="ttc" id="namespacearmnn_xhtml_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00018">Types.hpp:18</a></div></div>
11360</div><!-- fragment -->
11361</div>
11362</div>
11363<a id="ae4ab3bf0697ad13316a6bcba0a8fade5"></a>
11364<h2 class="memtitle"><span class="permalink"><a href="#ae4ab3bf0697ad13316a6bcba0a8fade5">&#9670;&nbsp;</a></span>ConditionalThrow() <span class="overload">[1/2]</span></h2>
11365
11366<div class="memitem">
11367<div class="memproto">
11368 <table class="memname">
11369 <tr>
11370 <td class="memname">void armnn::ConditionalThrow </td>
11371 <td>(</td>
11372 <td class="paramtype">bool&#160;</td>
11373 <td class="paramname"><em>condition</em>, </td>
11374 </tr>
11375 <tr>
11376 <td class="paramkey"></td>
11377 <td></td>
11378 <td class="paramtype">const std::string &amp;&#160;</td>
11379 <td class="paramname"><em>message</em>&#160;</td>
11380 </tr>
11381 <tr>
11382 <td></td>
11383 <td>)</td>
11384 <td></td><td></td>
11385 </tr>
11386 </table>
11387</div><div class="memdoc">
11388
11389<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.xhtml#l00154">154</a> of file <a class="el" href="_exceptions_8hpp_source.xhtml">Exceptions.hpp</a>.</p>
11390<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (!condition)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">throw</span> ExceptionType(message);</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;}</div></div><!-- fragment -->
11391</div>
11392</div>
11393<a id="a6ed414c05eb6d4c89e0e4a475a0479c0"></a>
11394<h2 class="memtitle"><span class="permalink"><a href="#a6ed414c05eb6d4c89e0e4a475a0479c0">&#9670;&nbsp;</a></span>ConditionalThrow() <span class="overload">[2/2]</span></h2>
11395
11396<div class="memitem">
11397<div class="memproto">
11398 <table class="memname">
11399 <tr>
11400 <td class="memname">void armnn::ConditionalThrow </td>
11401 <td>(</td>
11402 <td class="paramtype">bool&#160;</td>
11403 <td class="paramname"><em>condition</em></td><td>)</td>
11404 <td></td>
11405 </tr>
11406 </table>
11407</div><div class="memdoc">
11408
11409<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.xhtml#l00163">163</a> of file <a class="el" href="_exceptions_8hpp_source.xhtml">Exceptions.hpp</a>.</p>
11410<div class="fragment"><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="keywordflow">if</span> (!condition)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">throw</span> ExceptionType();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;}</div></div><!-- fragment -->
11411</div>
11412</div>
11413<a id="ae57b7f9e2cb7080bf10b28d1f72b558e"></a>
11414<h2 class="memtitle"><span class="permalink"><a href="#ae57b7f9e2cb7080bf10b28d1f72b558e">&#9670;&nbsp;</a></span>ConditionalThrowIfNotEqual()</h2>
11415
11416<div class="memitem">
11417<div class="memproto">
11418 <table class="memname">
11419 <tr>
11420 <td class="memname">void armnn::ConditionalThrowIfNotEqual </td>
11421 <td>(</td>
11422 <td class="paramtype">const std::string &amp;&#160;</td>
11423 <td class="paramname"><em>message</em>, </td>
11424 </tr>
11425 <tr>
11426 <td class="paramkey"></td>
11427 <td></td>
11428 <td class="paramtype">const ComparedType &amp;&#160;</td>
11429 <td class="paramname"><em>leftHandSide</em>, </td>
11430 </tr>
11431 <tr>
11432 <td class="paramkey"></td>
11433 <td></td>
11434 <td class="paramtype">const ComparedType &amp;&#160;</td>
11435 <td class="paramname"><em>rightHandSide</em>&#160;</td>
11436 </tr>
11437 <tr>
11438 <td></td>
11439 <td>)</td>
11440 <td></td><td></td>
11441 </tr>
11442 </table>
11443</div><div class="memdoc">
11444
11445<p>ComparedType must support: operator==(const ComparedType&amp;) operator&lt;&lt;(ostream&amp;, const ComparedType&amp;) </p>
11446
11447<p class="definition">Definition at line <a class="el" href="_exceptions_8hpp_source.xhtml#l00178">178</a> of file <a class="el" href="_exceptions_8hpp_source.xhtml">Exceptions.hpp</a>.</p>
11448<div class="fragment"><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; <span class="keywordflow">if</span> (!(leftHandSide == rightHandSide))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; ss &lt;&lt; message &lt;&lt; <span class="stringliteral">&quot; : &quot;</span> &lt;&lt; leftHandSide &lt;&lt; <span class="stringliteral">&quot; != &quot;</span> &lt;&lt; rightHandSide;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">throw</span> ExceptionType(ss.str());</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div></div><!-- fragment -->
11449</div>
11450</div>
11451<a id="aa59f7a819c3e29d10ffc41e5c0616872"></a>
11452<h2 class="memtitle"><span class="permalink"><a href="#aa59f7a819c3e29d10ffc41e5c0616872">&#9670;&nbsp;</a></span>ConfigureLogging()</h2>
11453
11454<div class="memitem">
11455<div class="memproto">
11456 <table class="memname">
11457 <tr>
11458 <td class="memname">void ConfigureLogging </td>
11459 <td>(</td>
11460 <td class="paramtype">bool&#160;</td>
11461 <td class="paramname"><em>printToStandardOutput</em>, </td>
11462 </tr>
11463 <tr>
11464 <td class="paramkey"></td>
11465 <td></td>
11466 <td class="paramtype">bool&#160;</td>
11467 <td class="paramname"><em>printToDebugOutput</em>, </td>
11468 </tr>
11469 <tr>
11470 <td class="paramkey"></td>
11471 <td></td>
11472 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
11473 <td class="paramname"><em>severity</em>&#160;</td>
11474 </tr>
11475 <tr>
11476 <td></td>
11477 <td>)</td>
11478 <td></td><td></td>
11479 </tr>
11480 </table>
11481</div><div class="memdoc">
11482
11483<p>Configures the logging behaviour of the ARMNN library. </p>
11484<p>printToStandardOutput: Set to true if log messages should be printed to the standard output. printToDebugOutput: Set to true if log messages be printed to a platform-specific debug output (where supported). severity: All log messages that are at this severity level or higher will be printed, others will be ignored. </p>
11485
11486<p class="definition">Definition at line <a class="el" href="_utils_8cpp_source.xhtml#l00010">10</a> of file <a class="el" href="_utils_8cpp_source.xhtml">Utils.cpp</a>.</p>
11487
11488<p class="reference">References <a class="el" href="_logging_8cpp_source.xhtml#l00146">SetAllLoggingSinks()</a>, <a class="el" href="_logging_8cpp_source.xhtml#l00028">SetLogFilter()</a>, and <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>.</p>
11489
11490<p class="reference">Referenced by <a class="el" href="_unit_tests_8hpp_source.xhtml#l00015">ConfigureLoggingTest()</a>, <a class="el" href="_inference_test_8inl_source.xhtml#l00301">armnn::test::InferenceTestMain()</a>, <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00031">LogLevelSwapper::LogLevelSwapper()</a>, <a class="el" href="_armnn_converter_8cpp_source.xhtml#l00359">main()</a>, and <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00036">LogLevelSwapper::~LogLevelSwapper()</a>.</p>
11491<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a7f8325a4bc02f2f687ba1968b595ec0a">SetAllLoggingSinks</a>(printToStandardOutput, printToDebugOutput, <span class="keyword">false</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac9aad76a34137b6359a867b282ea7cfb">SetLogFilter</a>(severity);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a7f8325a4bc02f2f687ba1968b595ec0a"><div class="ttname"><a href="namespacearmnn.xhtml#a7f8325a4bc02f2f687ba1968b595ec0a">armnn::SetAllLoggingSinks</a></div><div class="ttdeci">void SetAllLoggingSinks(bool standardOut, bool debugOut, bool coloured)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.xhtml#l00146">Logging.cpp:146</a></div></div>
11492<div class="ttc" id="namespacearmnn_xhtml_ac9aad76a34137b6359a867b282ea7cfb"><div class="ttname"><a href="namespacearmnn.xhtml#ac9aad76a34137b6359a867b282ea7cfb">armnn::SetLogFilter</a></div><div class="ttdeci">void SetLogFilter(LogSeverity level)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8cpp_source.xhtml#l00028">Logging.cpp:28</a></div></div>
11493</div><!-- fragment -->
11494</div>
11495</div>
11496<a id="ab562537b5c1ef1e6cde9db9f5fa322bd"></a>
11497<h2 class="memtitle"><span class="permalink"><a href="#ab562537b5c1ef1e6cde9db9f5fa322bd">&#9670;&nbsp;</a></span>ConfigureTuner()</h2>
11498
11499<div class="memitem">
11500<div class="memproto">
11501 <table class="memname">
11502 <tr>
11503 <td class="memname">void armnn::ConfigureTuner </td>
11504 <td>(</td>
11505 <td class="paramtype">arm_compute::CLTuner &amp;&#160;</td>
11506 <td class="paramname"><em>tuner</em>, </td>
11507 </tr>
11508 <tr>
11509 <td class="paramkey"></td>
11510 <td></td>
11511 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
11512 <td class="paramname"><em>level</em>&#160;</td>
11513 </tr>
11514 <tr>
11515 <td></td>
11516 <td>)</td>
11517 <td></td><td></td>
11518 </tr>
11519 </table>
11520</div><div class="memdoc">
11521
11522<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00131">131</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
11523
11524<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>, and <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>.</p>
11525
11526<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
11527<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; tuner.set_tune_new_kernels(<span class="keyword">true</span>); <span class="comment">// Turn on tuning initially.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">case</span> TuningLevel::Rapid:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::RAPID);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">case</span> TuningLevel::Normal:</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::NORMAL);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">case</span> TuningLevel::Exhaustive:</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; tuner.set_tuner_mode(arm_compute::CLTunerMode::EXHAUSTIVE);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">case</span> TuningLevel::None:</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; tuner.set_tune_new_kernels(<span class="keyword">false</span>); <span class="comment">// Turn off tuning. Set to &quot;use&quot; only mode.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;}</div></div><!-- fragment -->
11528</div>
11529</div>
11530<a id="ad701d0d29baa4266ab4d33b090aa661c"></a>
11531<h2 class="memtitle"><span class="permalink"><a href="#ad701d0d29baa4266ab4d33b090aa661c">&#9670;&nbsp;</a></span>ConvertActivationDescriptorToAclActivationLayerInfo()</h2>
11532
11533<div class="memitem">
11534<div class="memproto">
11535<table class="mlabels">
11536 <tr>
11537 <td class="mlabels-left">
11538 <table class="memname">
11539 <tr>
11540 <td class="memname">arm_compute::ActivationLayerInfo armnn::ConvertActivationDescriptorToAclActivationLayerInfo </td>
11541 <td>(</td>
11542 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
11543 <td class="paramname"><em>actDesc</em></td><td>)</td>
11544 <td></td>
11545 </tr>
11546 </table>
11547 </td>
11548 <td class="mlabels-right">
11549<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11550 </tr>
11551</table>
11552</div><div class="memdoc">
11553
11554<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00074">74</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11555
11556<p class="reference">References <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00051">ConvertActivationFunctionToAclActivationFunction()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>.</p>
11557
11558<p class="reference">Referenced by <a class="el" href="_cl_activation_workload_8cpp_source.xhtml#l00032">ClActivationWorkload::ClActivationWorkload()</a>, and <a class="el" href="_neon_activation_workload_8cpp_source.xhtml#l00030">NeonActivationWorkload::NeonActivationWorkload()</a>.</p>
11559<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> arm_compute::ActivationLayerInfo(<a class="code" href="namespacearmnn.xhtml#afdba36f125621d775d471f0daf613df2">ConvertActivationFunctionToAclActivationFunction</a>(actDesc.m_Function),</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; actDesc.m_A, actDesc.m_B);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_afdba36f125621d775d471f0daf613df2"><div class="ttname"><a href="namespacearmnn.xhtml#afdba36f125621d775d471f0daf613df2">armnn::ConvertActivationFunctionToAclActivationFunction</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo::ActivationFunction ConvertActivationFunctionToAclActivationFunction(ActivationFunction armnnFunction)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00051">ArmComputeUtils.hpp:51</a></div></div>
11560</div><!-- fragment -->
11561</div>
11562</div>
11563<a id="afdba36f125621d775d471f0daf613df2"></a>
11564<h2 class="memtitle"><span class="permalink"><a href="#afdba36f125621d775d471f0daf613df2">&#9670;&nbsp;</a></span>ConvertActivationFunctionToAclActivationFunction()</h2>
11565
11566<div class="memitem">
11567<div class="memproto">
11568<table class="mlabels">
11569 <tr>
11570 <td class="mlabels-left">
11571 <table class="memname">
11572 <tr>
11573 <td class="memname">arm_compute::ActivationLayerInfo::ActivationFunction armnn::ConvertActivationFunctionToAclActivationFunction </td>
11574 <td>(</td>
11575 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
11576 <td class="paramname"><em>armnnFunction</em></td><td>)</td>
11577 <td></td>
11578 </tr>
11579 </table>
11580 </td>
11581 <td class="mlabels-right">
11582<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11583 </tr>
11584</table>
11585</div><div class="memdoc">
11586
11587<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00051">51</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11588
11589<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
11590
11591<p class="reference">Referenced by <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00074">ConvertActivationDescriptorToAclActivationLayerInfo()</a>.</p>
11592<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">using</span> AclActivationFunction = <a class="code" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">arm_compute::ActivationLayerInfo::ActivationFunction</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">switch</span> (armnnFunction)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> AclActivationFunction::LINEAR;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Arm compute&#39;s &#39;logistic&#39; function is non-parameterized, so it is exactly a sigmoid function.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> AclActivationFunction::LOGISTIC;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> AclActivationFunction::RELU;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> AclActivationFunction::LU_BOUNDED_RELU;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> AclActivationFunction::SOFT_RELU;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> AclActivationFunction::LEAKY_RELU;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> AclActivationFunction::ABS;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> AclActivationFunction::SQRT;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> AclActivationFunction::SQUARE;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> AclActivationFunction::TANH;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Elu: <span class="keywordflow">return</span> AclActivationFunction::ELU;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported activation function&quot;</span>);</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="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9ea"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">armnn::ActivationFunction</a></div><div class="ttdeci">ActivationFunction</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00055">Types.hpp:55</a></div></div>
11593</div><!-- fragment -->
11594</div>
11595</div>
11596<a id="abccab9266ab13dbd806445af31ddbba7"></a>
11597<h2 class="memtitle"><span class="permalink"><a href="#abccab9266ab13dbd806445af31ddbba7">&#9670;&nbsp;</a></span>ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo()</h2>
11598
11599<div class="memitem">
11600<div class="memproto">
11601<table class="mlabels">
11602 <tr>
11603 <td class="mlabels-left">
11604 <table class="memname">
11605 <tr>
11606 <td class="memname">arm_compute::FullyConnectedLayerInfo armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo </td>
11607 <td>(</td>
11608 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
11609 <td class="paramname"><em>fullyConnectedDesc</em></td><td>)</td>
11610 <td></td>
11611 </tr>
11612 </table>
11613 </td>
11614 <td class="mlabels-right">
11615<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11616 </tr>
11617</table>
11618</div><div class="memdoc">
11619
11620<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00119">119</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11621
11622<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
11623<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; arm_compute::FullyConnectedLayerInfo fc_info;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; fc_info.transpose_weights = fullyConnectedDesc.m_TransposeWeightMatrix;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> fc_info;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div></div><!-- fragment -->
11624</div>
11625</div>
11626<a id="a9cdee30c21f3dd630b4e460527105b74"></a>
11627<h2 class="memtitle"><span class="permalink"><a href="#a9cdee30c21f3dd630b4e460527105b74">&#9670;&nbsp;</a></span>ConvertLogSeverity()</h2>
11628
11629<div class="memitem">
11630<div class="memproto">
11631 <table class="memname">
11632 <tr>
11633 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> armnn::ConvertLogSeverity </td>
11634 <td>(</td>
11635 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a>&#160;</td>
11636 <td class="paramname"><em>severity</em></td><td>)</td>
11637 <td></td>
11638 </tr>
11639 </table>
11640</div><div class="memdoc">
11641
11642<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.xhtml#l00157">157</a> of file <a class="el" href="_logging_8hpp_source.xhtml">Logging.hpp</a>.</p>
11643<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a><span class="keyword">&gt;</span>(severity);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3d"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">armnn::LogSeverity</a></div><div class="ttdeci">LogSeverity</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.xhtml#l00012">Utils.hpp:12</a></div></div>
11644</div><!-- fragment -->
11645</div>
11646</div>
11647<a id="ad69ffa576a596b9eb20ab6a41420c541"></a>
11648<h2 class="memtitle"><span class="permalink"><a href="#ad69ffa576a596b9eb20ab6a41420c541">&#9670;&nbsp;</a></span>ConvertMaskToACLFormat()</h2>
11649
11650<div class="memitem">
11651<div class="memproto">
11652 <table class="memname">
11653 <tr>
11654 <td class="memname">int32_t ConvertMaskToACLFormat </td>
11655 <td>(</td>
11656 <td class="paramtype">int32_t&#160;</td>
11657 <td class="paramname"><em>mask</em>, </td>
11658 </tr>
11659 <tr>
11660 <td class="paramkey"></td>
11661 <td></td>
11662 <td class="paramtype">int32_t&#160;</td>
11663 <td class="paramname"><em>numDim</em>&#160;</td>
11664 </tr>
11665 <tr>
11666 <td></td>
11667 <td>)</td>
11668 <td></td><td></td>
11669 </tr>
11670 </table>
11671</div><div class="memdoc">
11672
11673<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00192">192</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
11674
11675<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
11676<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; int32_t reversedMask = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; boost::numeric_cast&lt;unsigned int&gt;(numDim); ++i)</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="comment">// Check if bit set in mask for each dimension</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; int32_t bit = (mask &amp; 1 &lt;&lt; i) != 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Increment the new mask with the bits reversed</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; reversedMask += (bit &lt;&lt; std::max(numDim-(boost::numeric_cast&lt;int&gt;(i)+1), 0));</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;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> reversedMask;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div></div><!-- fragment -->
11677</div>
11678</div>
11679<a id="aa5baabb8e3a4aa6cbdcab419d743e747"></a>
11680<h2 class="memtitle"><span class="permalink"><a href="#aa5baabb8e3a4aa6cbdcab419d743e747">&#9670;&nbsp;</a></span>ConvertNormalizationAlgorithmChannelToAclNormType()</h2>
11681
11682<div class="memitem">
11683<div class="memproto">
11684<table class="mlabels">
11685 <tr>
11686 <td class="mlabels-left">
11687 <table class="memname">
11688 <tr>
11689 <td class="memname">arm_compute::NormType armnn::ConvertNormalizationAlgorithmChannelToAclNormType </td>
11690 <td>(</td>
11691 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
11692 <td class="paramname"><em>channelType</em></td><td>)</td>
11693 <td></td>
11694 </tr>
11695 </table>
11696 </td>
11697 <td class="mlabels-right">
11698<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11699 </tr>
11700</table>
11701</div><div class="memdoc">
11702
11703<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00107">107</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11704
11705<p class="reference">References <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
11706<div class="fragment"><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; <span class="keyword">using</span> arm_compute::NormType;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">switch</span> (channelType)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> NormType::CROSS_MAP;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> NormType::IN_MAP_2D;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported normalization algorithm channel type&quot;</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;}</div></div><!-- fragment -->
11707</div>
11708</div>
11709<a id="a8f3bfacadfd6d2146d6ccd299dabc7aa"></a>
11710<h2 class="memtitle"><span class="permalink"><a href="#a8f3bfacadfd6d2146d6ccd299dabc7aa">&#9670;&nbsp;</a></span>ConvertOutputShapeRoundingToAclDimensionRoundingType()</h2>
11711
11712<div class="memitem">
11713<div class="memproto">
11714<table class="mlabels">
11715 <tr>
11716 <td class="mlabels-left">
11717 <table class="memname">
11718 <tr>
11719 <td class="memname">arm_compute::DimensionRoundingType armnn::ConvertOutputShapeRoundingToAclDimensionRoundingType </td>
11720 <td>(</td>
11721 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
11722 <td class="paramname"><em>rounding</em></td><td>)</td>
11723 <td></td>
11724 </tr>
11725 </table>
11726 </td>
11727 <td class="mlabels-right">
11728<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11729 </tr>
11730</table>
11731</div><div class="memdoc">
11732
11733<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00093">93</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11734
11735<p class="reference">References <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
11736<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">using</span> arm_compute::DimensionRoundingType;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span> (rounding)</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">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> DimensionRoundingType::CEIL;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> DimensionRoundingType::FLOOR;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported Output Shape Rounding type&quot;</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div></div><!-- fragment -->
11737</div>
11738</div>
11739<a id="ad256fcf8c7f4d5a240fa47f0b56d50af"></a>
11740<h2 class="memtitle"><span class="permalink"><a href="#ad256fcf8c7f4d5a240fa47f0b56d50af">&#9670;&nbsp;</a></span>ConvertPoolingAlgorithmToAclPoolingType()</h2>
11741
11742<div class="memitem">
11743<div class="memproto">
11744<table class="mlabels">
11745 <tr>
11746 <td class="mlabels-left">
11747 <table class="memname">
11748 <tr>
11749 <td class="memname">arm_compute::PoolingType armnn::ConvertPoolingAlgorithmToAclPoolingType </td>
11750 <td>(</td>
11751 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
11752 <td class="paramname"><em>poolingAlgorithm</em></td><td>)</td>
11753 <td></td>
11754 </tr>
11755 </table>
11756 </td>
11757 <td class="mlabels-right">
11758<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11759 </tr>
11760</table>
11761</div><div class="memdoc">
11762
11763<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00080">80</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11764
11765<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
11766<div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">using</span> arm_compute::PoolingType;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">switch</span> (poolingAlgorithm)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> PoolingType::MAX;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> PoolingType::AVG;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> PoolingType::L2;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported pooling algorithm&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</div></div><!-- fragment -->
11767</div>
11768</div>
11769<a id="ae9bdcb8ac91731109dc423d6ed476204"></a>
11770<h2 class="memtitle"><span class="permalink"><a href="#ae9bdcb8ac91731109dc423d6ed476204">&#9670;&nbsp;</a></span>ConvertResizeMethodToAclInterpolationPolicy()</h2>
11771
11772<div class="memitem">
11773<div class="memproto">
11774<table class="mlabels">
11775 <tr>
11776 <td class="mlabels-left">
11777 <table class="memname">
11778 <tr>
11779 <td class="memname">arm_compute::InterpolationPolicy armnn::ConvertResizeMethodToAclInterpolationPolicy </td>
11780 <td>(</td>
11781 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
11782 <td class="paramname"><em>resizeMethod</em></td><td>)</td>
11783 <td></td>
11784 </tr>
11785 </table>
11786 </td>
11787 <td class="mlabels-right">
11788<span class="mlabels"><span class="mlabel">inline</span></span> </td>
11789 </tr>
11790</table>
11791</div><div class="memdoc">
11792
11793<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00126">126</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
11794
11795<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
11796<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</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; <span class="keywordflow">case</span> ResizeMethod::Bilinear:</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::BILINEAR;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor:</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> arm_compute::InterpolationPolicy::NEAREST_NEIGHBOR;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Unsupported resize method&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div></div><!-- fragment -->
11797</div>
11798</div>
11799<a id="a51e8b95a429e11678ffa8b9fdc88351b"></a>
11800<h2 class="memtitle"><span class="permalink"><a href="#a51e8b95a429e11678ffa8b9fdc88351b">&#9670;&nbsp;</a></span>ConvertWeightTensorFromArmnnToAcl()</h2>
11801
11802<div class="memitem">
11803<div class="memproto">
11804 <table class="memname">
11805 <tr>
11806 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> ConvertWeightTensorFromArmnnToAcl </td>
11807 <td>(</td>
11808 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
11809 <td class="paramname"><em>weightTensor</em>, </td>
11810 </tr>
11811 <tr>
11812 <td class="paramkey"></td>
11813 <td></td>
11814 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11815 <td class="paramname"><em>dataLayout</em>, </td>
11816 </tr>
11817 <tr>
11818 <td class="paramkey"></td>
11819 <td></td>
11820 <td class="paramtype">void *&#160;</td>
11821 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
11822 </tr>
11823 <tr>
11824 <td></td>
11825 <td>)</td>
11826 <td></td><td></td>
11827 </tr>
11828 </table>
11829</div><div class="memdoc">
11830
11831<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00132">132</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
11832
11833<p class="reference">References <a class="el" href="_utils_8hpp_source.xhtml#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00172">BaseTensor&lt; MemoryType &gt;::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00013">PermuteTensor()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="_workload_utils_8cpp_source.xhtml#l00036">ReshapeWeightsForAcl()</a>.</p>
11834
11835<p class="reference">Referenced by <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.xhtml#l00070">ClDepthwiseConvolutionWorkload::ClDepthwiseConvolutionWorkload()</a>, <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>, and <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.xhtml#l00072">NeonDepthwiseConvolutionWorkload::NeonDepthwiseConvolutionWorkload()</a>.</p>
11836<div class="fragment"><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; BOOST_ASSERT_MSG(weightTensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</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; <span class="keyword">auto</span> multiplier = weightTensor-&gt;GetTensorInfo().GetShape()[0];</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">auto</span> inputChannels = weightTensor-&gt;GetTensorInfo().GetShape()[1];</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// If no permutation is necessary, leave the permutation vector empty</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; PermutationVector permutationVector{};</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</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; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; permutationVector = { 3, 2, 0, 1 };</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; ConstTensor weightPermuted = <a class="code" href="namespacearmnn.xhtml#a2a9ac8ebb69307ad4ec894ffa0523dbf">PermuteTensor</a>(weightTensor, permutationVector, permuteBuffer);</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; <span class="comment">// Shuffle the weights data to obtain the channel order needed used by Acl</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span> (multiplier &gt; 1 &amp;&amp; inputChannels &gt; 1 &amp;&amp; dataLayout == DataLayout::NCHW)</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; <span class="keywordflow">switch</span> (weightPermuted.GetDataType())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;float&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; weightPermuted =</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; ReorderWeightChannelsForAcl&lt;half_float::half&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;uint8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; weightPermuted = ReorderWeightChannelsForAcl&lt;int8_t&gt;(weightPermuted, dataLayout, permuteBuffer);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="namespacearmnn.xhtml#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermuted.GetInfo(), dataLayout);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">// 3. Return both the tensor and the allocated storage to ensure that the data stays alive</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> weightPermuted;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
11837<div class="ttc" id="namespacearmnn_xhtml_a2a9ac8ebb69307ad4ec894ffa0523dbf"><div class="ttname"><a href="namespacearmnn.xhtml#a2a9ac8ebb69307ad4ec894ffa0523dbf">armnn::PermuteTensor</a></div><div class="ttdeci">armnn::ConstTensor PermuteTensor(const ConstCpuTensorHandle *tensor, const PermutationVector &amp;permutationVector, void *permuteBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00013">WorkloadUtils.cpp:13</a></div></div>
11838<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
11839<div class="ttc" id="_utils_8hpp_xhtml_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.xhtml#l00035">Utils.hpp:35</a></div></div>
11840<div class="ttc" id="namespacearmnn_xhtml_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.xhtml#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00036">WorkloadUtils.cpp:36</a></div></div>
11841</div><!-- fragment -->
11842</div>
11843</div>
11844<a id="a1e8288eac7e909fdb58b6113d816763a"></a>
11845<h2 class="memtitle"><span class="permalink"><a href="#a1e8288eac7e909fdb58b6113d816763a">&#9670;&nbsp;</a></span>ConvertWeightTensorInfoFromArmnnToAcl()</h2>
11846
11847<div class="memitem">
11848<div class="memproto">
11849 <table class="memname">
11850 <tr>
11851 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> ConvertWeightTensorInfoFromArmnnToAcl </td>
11852 <td>(</td>
11853 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
11854 <td class="paramname"><em>weightInfo</em>, </td>
11855 </tr>
11856 <tr>
11857 <td class="paramkey"></td>
11858 <td></td>
11859 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11860 <td class="paramname"><em>dataLayout</em>&#160;</td>
11861 </tr>
11862 <tr>
11863 <td></td>
11864 <td>)</td>
11865 <td></td><td></td>
11866 </tr>
11867 </table>
11868</div><div class="memdoc">
11869
11870<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00109">109</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
11871
11872<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="_permute_8cpp_source.xhtml#l00098">armnnUtils::Permuted()</a>, and <a class="el" href="_workload_utils_8cpp_source.xhtml#l00036">ReshapeWeightsForAcl()</a>.</p>
11873
11874<p class="reference">Referenced by <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>.</p>
11875<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="comment">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></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="comment">// 1. Permute the weights if necessary</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// If the data layout is NCHW no permutation is necessary, as a reshape to [ 1, I * M, H, W ] can be better done</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// starting from the current shape of [ M, I, H, W ]</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; TensorInfo weightPermutedInfo(weightInfo);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</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; <span class="comment">// The data layout is NHWC, then permute the weights from [ M, I, H, W ] to [ H, W, I, M ]</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; PermutationVector permutationVector{ 3, 2, 0, 1 };</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; weightPermutedInfo = <a class="code" href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(weightInfo, permutationVector);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// 2. Reshape the weights</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacearmnn.xhtml#a3170fdd696155a247ecd81d445c0e2e1">ReshapeWeightsForAcl</a>(weightPermutedInfo, dataLayout);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// 3. Return the permuted weight info</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> weightPermutedInfo;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a3170fdd696155a247ecd81d445c0e2e1"><div class="ttname"><a href="namespacearmnn.xhtml#a3170fdd696155a247ecd81d445c0e2e1">armnn::ReshapeWeightsForAcl</a></div><div class="ttdeci">void ReshapeWeightsForAcl(TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00036">WorkloadUtils.cpp:36</a></div></div>
11876<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>
11877</div><!-- fragment -->
11878</div>
11879</div>
11880<a id="af98115cd07776d3fa8424434d2a7a897"></a>
11881<h2 class="memtitle"><span class="permalink"><a href="#af98115cd07776d3fa8424434d2a7a897">&#9670;&nbsp;</a></span>Convolve()</h2>
11882
11883<div class="memitem">
11884<div class="memproto">
11885 <table class="memname">
11886 <tr>
11887 <td class="memname">void Convolve </td>
11888 <td>(</td>
11889 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
11890 <td class="paramname"><em>rInputShape</em>, </td>
11891 </tr>
11892 <tr>
11893 <td class="paramkey"></td>
11894 <td></td>
11895 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
11896 <td class="paramname"><em>rInputDecoder</em>, </td>
11897 </tr>
11898 <tr>
11899 <td class="paramkey"></td>
11900 <td></td>
11901 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
11902 <td class="paramname"><em>rOutputShape</em>, </td>
11903 </tr>
11904 <tr>
11905 <td class="paramkey"></td>
11906 <td></td>
11907 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
11908 <td class="paramname"><em>rOutputEncoder</em>, </td>
11909 </tr>
11910 <tr>
11911 <td class="paramkey"></td>
11912 <td></td>
11913 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
11914 <td class="paramname"><em>rFilterShape</em>, </td>
11915 </tr>
11916 <tr>
11917 <td class="paramkey"></td>
11918 <td></td>
11919 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
11920 <td class="paramname"><em>rFilterDecoder</em>, </td>
11921 </tr>
11922 <tr>
11923 <td class="paramkey"></td>
11924 <td></td>
11925 <td class="paramtype">bool&#160;</td>
11926 <td class="paramname"><em>biasEnabled</em>, </td>
11927 </tr>
11928 <tr>
11929 <td class="paramkey"></td>
11930 <td></td>
11931 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *&#160;</td>
11932 <td class="paramname"><em>pBiasDecoder</em>, </td>
11933 </tr>
11934 <tr>
11935 <td class="paramkey"></td>
11936 <td></td>
11937 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
11938 <td class="paramname"><em>dataLayout</em>, </td>
11939 </tr>
11940 <tr>
11941 <td class="paramkey"></td>
11942 <td></td>
11943 <td class="paramtype">unsigned int&#160;</td>
11944 <td class="paramname"><em>paddingTop</em>, </td>
11945 </tr>
11946 <tr>
11947 <td class="paramkey"></td>
11948 <td></td>
11949 <td class="paramtype">unsigned int&#160;</td>
11950 <td class="paramname"><em>paddingLeft</em>, </td>
11951 </tr>
11952 <tr>
11953 <td class="paramkey"></td>
11954 <td></td>
11955 <td class="paramtype">unsigned int&#160;</td>
11956 <td class="paramname"><em>xStride</em>, </td>
11957 </tr>
11958 <tr>
11959 <td class="paramkey"></td>
11960 <td></td>
11961 <td class="paramtype">unsigned int&#160;</td>
11962 <td class="paramname"><em>yStride</em>, </td>
11963 </tr>
11964 <tr>
11965 <td class="paramkey"></td>
11966 <td></td>
11967 <td class="paramtype">unsigned int&#160;</td>
11968 <td class="paramname"><em>xDilation</em>, </td>
11969 </tr>
11970 <tr>
11971 <td class="paramkey"></td>
11972 <td></td>
11973 <td class="paramtype">unsigned int&#160;</td>
11974 <td class="paramname"><em>yDilation</em>, </td>
11975 </tr>
11976 <tr>
11977 <td class="paramkey"></td>
11978 <td></td>
11979 <td class="paramtype">bool&#160;</td>
11980 <td class="paramname"><em>depthwise</em>&#160;</td>
11981 </tr>
11982 <tr>
11983 <td></td>
11984 <td>)</td>
11985 <td></td><td></td>
11986 </tr>
11987 </table>
11988</div><div class="memdoc">
11989
11990<p class="definition">Definition at line <a class="el" href="_conv_impl_8cpp_source.xhtml#l00071">71</a> of file <a class="el" href="_conv_impl_8cpp_source.xhtml">ConvImpl.cpp</a>.</p>
11991
11992<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
11993
11994<p class="reference">Referenced by <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.xhtml#l00046">RefDepthwiseConvolution2dWorkload::Execute()</a>, and <a class="el" href="_ref_convolution2d_workload_8cpp_source.xhtml#l00044">RefConvolution2dWorkload::Execute()</a>.</p>
11995<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (biasEnabled &amp;&amp; !pBiasDecoder)</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"> 90</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Bias is enabled but the bias data is invalid&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(dataLayout);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthMultiplier = depthwise ? rFilterShape[0] : 1;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = depthwise ? rFilterShape[1] : rFilterShape[channelsIndex];</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = depthwise ? inputChannels * depthMultiplier : rFilterShape[0];</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = rOutputShape[0];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = rOutputShape[heightIndex];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = rOutputShape[widthIndex];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = rInputShape[heightIndex];</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = rInputShape[widthIndex];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterHeight = depthwise ? rFilterShape[2] : rFilterShape[heightIndex];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterWidth = depthwise ? rFilterShape[3] : rFilterShape[widthIndex];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIdx = 0; batchIdx &lt; batchSize; batchIdx++)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cOutput = 0; cOutput &lt; outputChannels; cOutput++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0; yOutput &lt; outputHeight; yOutput++)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0; xOutput &lt; outputWidth; xOutput++)</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; <span class="comment">// This loop goes over each output element.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// For depthwise, each output channel corresponds to exactly one input channel.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// For normal, must loop over each input channel.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cInput = 0; cInput &lt; (depthwise ? 1 : inputChannels); cInput++)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthwiseMultiplierIdx = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; cInput = cOutput / depthMultiplier;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; depthwiseMultiplierIdx = cOutput % depthMultiplier;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yFilter = 0; yFilter &lt; filterHeight; yFilter++)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xFilter = 0; xFilter &lt; filterWidth; xFilter++)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// This loop goes over each input element for each output element.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filterIndex = 0;</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; <span class="comment">// Since dimensionality of kernel depends on depthwiseness, so does index.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (depthwise)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; filterIndex = depthwiseMultiplierIdx * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xFilter;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">else</span></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; <span class="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; filterIndex = cOutput * filterHeight * filterWidth * inputChannels +</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; yFilter * filterWidth * inputChannels +</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; xFilter * inputChannels +</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; cInput;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; filterIndex = cOutput * filterWidth * filterHeight * inputChannels +</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; cInput * filterWidth * filterHeight +</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; yFilter * filterWidth +</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; xFilter;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; rFilterDecoder.<a class="code" href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(filterIndex, cOutput);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> filterValue = rFilterDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = yOutput * yStride + yFilter * yDilation;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = xOutput * xStride + xFilter * xDilation;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">float</span> inputValue;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// Check if we&#39;re in the padding.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (yInput &lt; paddingTop || yInput &gt;= inputHeight + paddingTop ||</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; xInput &lt; paddingLeft || xInput &gt;= inputWidth + paddingLeft )</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; inputValue = 0.0f;</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; <span class="keywordflow">else</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = 0;</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="comment">// Keep this implementation, as using DataLayoutIndexed::GetIndex causes great</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="comment">// performance regression.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (dataLayout == DataLayout::NHWC)</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; inputIndex = batchIdx * inputHeight * inputWidth * inputChannels +</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; (yInput - paddingTop) * inputWidth * inputChannels +</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; (xInput - paddingLeft) * inputChannels +</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; cInput;</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">else</span></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; inputIndex = batchIdx * inputWidth * inputHeight * inputChannels +</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; inputWidth * inputHeight * cInput +</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; inputWidth * (yInput - paddingTop) +</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; xInput - paddingLeft;</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;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; rInputDecoder[inputIndex];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; inputValue = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</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; sum += filterValue * inputValue;</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; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</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; <span class="keywordflow">if</span> (biasEnabled)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; (*pBiasDecoder).SetIndex(cOutput, cOutput);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; sum += pBiasDecoder-&gt;<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIdx = dataLayoutIndexed.GetIndex(rOutputShape, batchIdx, cOutput, yOutput, xOutput);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; rOutputEncoder[outIdx];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(sum);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
11996<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
11997<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
11998<div class="ttc" id="classarmnn_1_1_base_iterator_xhtml_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
11999</div><!-- fragment -->
12000</div>
12001</div>
12002<a id="a73447f827b995cf90d4029151514b4ba"></a>
12003<h2 class="memtitle"><span class="permalink"><a href="#a73447f827b995cf90d4029151514b4ba">&#9670;&nbsp;</a></span>CopyArmComputeClTensorData()</h2>
12004
12005<div class="memitem">
12006<div class="memproto">
12007 <table class="memname">
12008 <tr>
12009 <td class="memname">void armnn::CopyArmComputeClTensorData </td>
12010 <td>(</td>
12011 <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
12012 <td class="paramname"><em>dstTensor</em>, </td>
12013 </tr>
12014 <tr>
12015 <td class="paramkey"></td>
12016 <td></td>
12017 <td class="paramtype">const T *&#160;</td>
12018 <td class="paramname"><em>srcData</em>&#160;</td>
12019 </tr>
12020 <tr>
12021 <td></td>
12022 <td>)</td>
12023 <td></td><td></td>
12024 </tr>
12025 </table>
12026</div><div class="memdoc">
12027
12028<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00030">30</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
12029
12030<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00020">ARMNN_SCOPED_PROFILING_EVENT_CL</a>.</p>
12031
12032<p class="reference">Referenced by <a class="el" href="_cl_constant_workload_8cpp_source.xhtml#l00024">ClConstantWorkload::Execute()</a>.</p>
12033<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="_cl_workload_utils_8hpp.xhtml#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;MapClTensorForWriting&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; dstTensor.map(<span class="keyword">true</span>);</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; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="_cl_workload_utils_8hpp.xhtml#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a>(<span class="stringliteral">&quot;CopyToClTensor&quot;</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::CopyArmComputeITensorData&lt;T&gt;(srcData, dstTensor);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; dstTensor.unmap();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="_cl_workload_utils_8hpp_xhtml_a9166fc90a3ea47a2c9499a810b204daf"><div class="ttname"><a href="_cl_workload_utils_8hpp.xhtml#a9166fc90a3ea47a2c9499a810b204daf">ARMNN_SCOPED_PROFILING_EVENT_CL</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT_CL(name)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00020">ClWorkloadUtils.hpp:20</a></div></div>
12034</div><!-- fragment -->
12035</div>
12036</div>
12037<a id="a1351e01f9fb983937caf79e353142b41"></a>
12038<h2 class="memtitle"><span class="permalink"><a href="#a1351e01f9fb983937caf79e353142b41">&#9670;&nbsp;</a></span>CopyArmComputeTensorData()</h2>
12039
12040<div class="memitem">
12041<div class="memproto">
12042 <table class="memname">
12043 <tr>
12044 <td class="memname">void armnn::CopyArmComputeTensorData </td>
12045 <td>(</td>
12046 <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
12047 <td class="paramname"><em>dstTensor</em>, </td>
12048 </tr>
12049 <tr>
12050 <td class="paramkey"></td>
12051 <td></td>
12052 <td class="paramtype">const T *&#160;</td>
12053 <td class="paramname"><em>srcData</em>&#160;</td>
12054 </tr>
12055 <tr>
12056 <td></td>
12057 <td>)</td>
12058 <td></td><td></td>
12059 </tr>
12060 </table>
12061</div><div class="memdoc">
12062
12063<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00029">29</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.xhtml">NeonWorkloadUtils.hpp</a>.</p>
12064
12065<p class="reference">Referenced by <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00035">InitializeArmComputeTensorData()</a>.</p>
12066<div class="fragment"><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;{</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; InitialiseArmComputeTensorEmpty(dstTensor);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; CopyArmComputeITensorData(srcData, dstTensor);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div></div><!-- fragment -->
12067</div>
12068</div>
12069<a id="a92c91193007aa49f4732d6dba5397f8d"></a>
12070<h2 class="memtitle"><span class="permalink"><a href="#a92c91193007aa49f4732d6dba5397f8d">&#9670;&nbsp;</a></span>CopyTensorContentsGeneric()</h2>
12071
12072<div class="memitem">
12073<div class="memproto">
12074 <table class="memname">
12075 <tr>
12076 <td class="memname">void armnn::CopyTensorContentsGeneric </td>
12077 <td>(</td>
12078 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
12079 <td class="paramname"><em>srcTensor</em>, </td>
12080 </tr>
12081 <tr>
12082 <td class="paramkey"></td>
12083 <td></td>
12084 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
12085 <td class="paramname"><em>dstTensor</em>, </td>
12086 </tr>
12087 <tr>
12088 <td class="paramkey"></td>
12089 <td></td>
12090 <td class="paramtype">CopyFunc&#160;</td>
12091 <td class="paramname"><em>copy</em>&#160;</td>
12092 </tr>
12093 <tr>
12094 <td></td>
12095 <td>)</td>
12096 <td></td><td></td>
12097 </tr>
12098 </table>
12099</div><div class="memdoc">
12100
12101<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.xhtml#l00049">49</a> of file <a class="el" href="_workload_utils_8hpp_source.xhtml">WorkloadUtils.hpp</a>.</p>
12102
12103<p class="reference">References <a class="el" href="_profiling_8hpp_source.xhtml#l00169">ARMNN_SCOPED_PROFILING_EVENT</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#affd5aae75cad90f472f96cfd25a13f29">ITensorHandle::GetShape()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a30c3e09ce55369b66469443a4ca5ef03">ITensorHandle::GetStrides()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>, <a class="el" href="_types_8hpp_source.xhtml#l00018">MaxNumOfTensorDimensions</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a563609828050f1b3a7868c23f3365923">ITensorHandle::Unmap()</a>.</p>
12104
12105<p class="reference">Referenced by <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00025">NeonConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00026">NeonConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_mem_copy_workload_8cpp_source.xhtml#l00049">CopyMemGenericWorkload::Execute()</a>.</p>
12106<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// For ease of understanding, names are assigned to the dimensions</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// of the tensor as if NHWC, however this routine works with any 5D tensor</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; static_assert(<a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a> == 5, <span class="stringliteral">&quot;Please update CopyTensorContents&quot;</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; TensorShape srcStrides = srcTensor-&gt;GetStrides();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> TensorShape&amp; srcShape = srcTensor-&gt;GetShape();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> srcSize = srcTensor-&gt;GetStrides()[0] * srcShape[0];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(srcSize); <span class="comment">// Only used for asserts</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; TensorShape dstStrides = dstTensor-&gt;GetStrides();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> TensorShape&amp; dstShape = dstTensor-&gt;GetShape();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span> dstSize = dstTensor-&gt;GetStrides()[0] * dstShape[0];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(dstSize); <span class="comment">// Only used for asserts</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; <span class="keywordtype">size_t</span> srcDepth = 1;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> srcBatches = 1;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">size_t</span> srcHeight = 1;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">size_t</span> srcWidth = 1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">size_t</span> srcChannels = 1;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; AssignValues(srcShape.GetNumDimensions(),</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 0,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; srcShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; srcChannels,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; srcWidth,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; srcHeight,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; srcBatches,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; srcDepth);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">size_t</span> srcDepthStride = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> srcBatchStride = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">size_t</span> srcHeightStride = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">size_t</span> srcWidthStride = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">size_t</span> srcChannelStride = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; AssignValues(srcStrides.GetNumDimensions(),</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; 0,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; srcStrides,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; srcChannelStride,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; srcWidthStride,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; srcHeightStride,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; srcBatchStride,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; srcDepthStride);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">size_t</span> dstDepth = 1;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">size_t</span> dstBatches = 1;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">size_t</span> dstHeight = 1;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">size_t</span> dstWidth = 1;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">size_t</span> dstChannels = 1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; AssignValues(dstShape.GetNumDimensions(),</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; 0,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dstShape,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; dstChannels,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; dstWidth,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; dstHeight,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; dstBatches,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; dstDepth);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">size_t</span> dstDepthStride = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">size_t</span> dstBatchStride = 0;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">size_t</span> dstHeightStride = 0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">size_t</span> dstWidthStride = 0;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">size_t</span> dstChannelStride = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; AssignValues(dstStrides.GetNumDimensions(),</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; 0,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; dstStrides,</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; dstChannelStride,</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; dstWidthStride,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dstHeightStride,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; dstBatchStride,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; dstDepthStride);</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcDataStart;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstDataStart;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a>(Compute::Undefined, <span class="stringliteral">&quot;Synchronize buffers&quot;</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; srcDataStart = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(srcTensor-&gt;Map());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; dstDataStart = <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(dstTensor-&gt;Map());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">size_t</span> copyLength = std::min(srcChannels * srcChannelStride, dstChannels * dstChannelStride);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">size_t</span> copyWidth = std::min(srcWidth, dstWidth);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">size_t</span> copyHeight = std::min(srcHeight, dstHeight);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> copyBatches = std::min(srcBatches, dstBatches);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">size_t</span> copyDepth = std::min(srcDepth, dstDepth);</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">// Coalesce inner dimensions where possible</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// to reduce overheard calling copy() and to</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="comment">// allow for memory bandwidth optimisations</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (copyLength == srcWidthStride &amp;&amp;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; copyLength == dstWidthStride)</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; <span class="comment">// There is no special padding between rows,</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// and sizes are compatible, so copy whole rows</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; copyLength *= copyWidth;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; copyWidth = 1;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (copyLength == srcHeightStride &amp;&amp;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; copyLength == dstHeightStride)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// There is no special padding between batches</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// and sizes are compatible so copy whole batches</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; copyLength *= copyHeight;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; copyHeight = 1;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* srcData = srcDataStart;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* dstData = dstDataStart;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; copyDepth; ++d)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">auto</span> srcPtrDepth = srcData;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">auto</span> dstPtrDepth = dstData;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; copyBatches; ++b)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">auto</span> srcPtrBatch = srcData;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">auto</span> dstPtrBatch = dstData;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; copyHeight; ++h)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">auto</span> srcPtrChannel = srcData;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">auto</span> dstPtrChannel = dstData;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; copyWidth; ++w)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; BOOST_ASSERT(srcData &gt;= srcDataStart &amp;&amp; srcData + copyLength &lt;= srcDataStart + srcSize);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; BOOST_ASSERT(dstData &gt;= dstDataStart &amp;&amp; dstData + copyLength &lt;= dstDataStart + dstSize);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; copy(dstData, srcData, copyLength);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; dstData += dstWidthStride;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; srcData += srcWidthStride;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstHeightStride) - (dstData - dstPtrChannel));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcHeightStride) - (srcData - srcPtrChannel));</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstBatchStride) - (dstData - dstPtrBatch));</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcBatchStride) - (srcData - srcPtrBatch));</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; dstData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(dstDepthStride) - (dstData - dstPtrDepth));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; srcData += (<span class="keyword">static_cast&lt;</span><span class="keywordtype">long</span><span class="keyword">&gt;</span>(srcDepthStride) - (srcData - srcPtrDepth));</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;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; srcTensor-&gt;Unmap();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; dstTensor-&gt;Unmap();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</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>
12107<div class="ttc" id="_profiling_8hpp_xhtml_a5ccc65e2c464ac05ce311fdae7ede03a"><div class="ttname"><a href="_profiling_8hpp.xhtml#a5ccc65e2c464ac05ce311fdae7ede03a">ARMNN_SCOPED_PROFILING_EVENT</a></div><div class="ttdeci">#define ARMNN_SCOPED_PROFILING_EVENT(backendId, name)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8hpp_source.xhtml#l00169">Profiling.hpp:169</a></div></div>
12108<div class="ttc" id="namespacearmnn_xhtml_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00018">Types.hpp:18</a></div></div>
12109</div><!-- fragment -->
12110</div>
12111</div>
12112<a id="a5e783a951642781b9e7b55db06a514b7"></a>
12113<h2 class="memtitle"><span class="permalink"><a href="#a5e783a951642781b9e7b55db06a514b7">&#9670;&nbsp;</a></span>CreateAclNormalizationLayerInfoForL2Normalization()</h2>
12114
12115<div class="memitem">
12116<div class="memproto">
12117<table class="mlabels">
12118 <tr>
12119 <td class="mlabels-left">
12120 <table class="memname">
12121 <tr>
12122 <td class="memname">arm_compute::NormalizationLayerInfo armnn::CreateAclNormalizationLayerInfoForL2Normalization </td>
12123 <td>(</td>
12124 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
12125 <td class="paramname"><em>tensorInfo</em>, </td>
12126 </tr>
12127 <tr>
12128 <td class="paramkey"></td>
12129 <td></td>
12130 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
12131 <td class="paramname"><em>dataLayout</em>&#160;</td>
12132 </tr>
12133 <tr>
12134 <td></td>
12135 <td>)</td>
12136 <td></td><td></td>
12137 </tr>
12138 </table>
12139 </td>
12140 <td class="mlabels-right">
12141<span class="mlabels"><span class="mlabel">inline</span></span> </td>
12142 </tr>
12143</table>
12144</div><div class="memdoc">
12145
12146<p class="definition">Definition at line <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_arm_compute_utils_8hpp_source.xhtml">ArmComputeUtils.hpp</a>.</p>
12147
12148<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>.</p>
12149<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depthDimension = dataLayout == <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a> ? 1 : 3;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> depth = tensorInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[depthDimension];</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// At the time of writing, {CL|Neon}L2Normalization performs the reduction only along dimension 0. This version of</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// L2 Normalization always performs the reduction along the depth axis, though. Thus, we repurpose</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayers to act as depthwise L2 normalizations by carefully chosing the normalization</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// parameters.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="comment">// Please refer to both the reference implementation of the normalization layer and the implementation of</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// {CL|Neon}NormalizationLayer when checking the derivations for the parameter values below.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="comment">// Make sure normalization covers the entire depth range. ACL requires the normalization size to be odd.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// CL: This does not result in extra kernel threads not doing any work: See usage of the RADIUS parameter in</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// ACL&#39;s normalization_layer_cross_map() CL function.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> uint32_t normSize = depth * 2u + 1u;</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="comment">// See ACL&#39;s NormalizationLayerInfo::scale_coeff() definition.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// For the reference implementation, to make alpha_ become 1, we&#39;d have to use alpha = normSize instead.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> alpha = 1.0f;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// Don&#39;t offset the reduction.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> kappa = 0.0f;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// pow(reduction, -0.5) = 1 / sqrt(reduction)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> beta = 0.5f;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NormalizationLayerInfo(arm_compute::NormType::CROSS_MAP, normSize, alpha, beta, kappa, <span class="keyword">false</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</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#l00088">Tensor.hpp:88</a></div></div>
12150<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
12151</div><!-- fragment -->
12152</div>
12153</div>
12154<a id="a733ae6b70d0bfa43433c3e7606992328"></a>
12155<h2 class="memtitle"><span class="permalink"><a href="#a733ae6b70d0bfa43433c3e7606992328">&#9670;&nbsp;</a></span>CreateDescriptorForConcatenation()</h2>
12156
12157<div class="memitem">
12158<div class="memproto">
12159 <table class="memname">
12160 <tr>
12161 <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> armnn::CreateDescriptorForConcatenation </td>
12162 <td>(</td>
12163 <td class="paramtype">TensorShapeIt&#160;</td>
12164 <td class="paramname"><em>first</em>, </td>
12165 </tr>
12166 <tr>
12167 <td class="paramkey"></td>
12168 <td></td>
12169 <td class="paramtype">TensorShapeIt&#160;</td>
12170 <td class="paramname"><em>last</em>, </td>
12171 </tr>
12172 <tr>
12173 <td class="paramkey"></td>
12174 <td></td>
12175 <td class="paramtype">unsigned int&#160;</td>
12176 <td class="paramname"><em>concatenationDimension</em>&#160;</td>
12177 </tr>
12178 <tr>
12179 <td></td>
12180 <td>)</td>
12181 <td></td><td></td>
12182 </tr>
12183 </table>
12184</div><div class="memdoc">
12185
12186<p>Convenience template to create an <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml" title="An OriginsDescriptor for the ConcatLayer. ">OriginsDescriptor</a> to use when creating a <a class="el" href="classarmnn_1_1_concat_layer.xhtml" title="This layer represents a merge operation. ">ConcatLayer</a> for performing concatenation of a number of input tensors. </p>
12187
12188<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.xhtml#l00242">242</a> of file <a class="el" href="_descriptors_8hpp_source.xhtml">Descriptors.hpp</a>.</p>
12189
12190<p class="reference">References <a class="el" href="_descriptors_8cpp_source.xhtml#l00150">OriginsDescriptor::SetConcatAxis()</a>, and <a class="el" href="_descriptors_8cpp_source.xhtml#l00159">OriginsDescriptor::SetViewOriginCoord()</a>.</p>
12191
12192<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01542">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l01916">ConcatDifferentInputOutputQParamTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l00026">CreateDescriptorForConcat()</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00232">CreateMergerDescriptorForConcatenation()</a>.</p>
12193<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">auto</span> numInputs = std::distance(first, last);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (numInputs &lt; 2)</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; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Concatenation requires at least 2 inputs&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; firstInputShape = *first;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = firstInputShape.GetNumDimensions();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first + 1; it != last; ++it)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (it-&gt;GetNumDimensions() != numDimensions)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must have the same number of dimensions&quot;</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</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;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (concatenationDimension &gt;= numDimensions)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;concatenationDimension must be between 0 and the number of dimensions.&quot;</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> d = 0; d &lt; numDimensions; ++d)</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; <span class="keyword">const</span> <span class="keywordtype">bool</span> dimSizeOk = (d == concatenationDimension) || (firstInputShape[d] == (*it)[d]);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (!dimSizeOk)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;All inputs to concatenation must be the same size along all dimensions &quot;</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="stringliteral">&quot; except the concatenation dimension&quot;</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; OriginsDescriptor viewsDescriptor(static_cast&lt;uint32_t&gt;(numInputs), numDimensions);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; viewsDescriptor.SetConcatAxis(concatenationDimension);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; uint32_t viewIndex = 0u;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; uint32_t coordAlongConcatDim = 0u;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> <span class="keyword">auto</span>&amp; inputShape = *it;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; concatenationDimension; ++i)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</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; viewsDescriptor.SetViewOriginCoord(viewIndex, concatenationDimension, coordAlongConcatDim);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimSize = inputShape[concatenationDimension];</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; coordAlongConcatDim += dimSize;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = concatenationDimension + 1; i &lt; numDimensions; ++i)</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; viewsDescriptor.SetViewOriginCoord(viewIndex, i, 0);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; ++viewIndex;</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;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> viewsDescriptor;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div></div><!-- fragment -->
12194</div>
12195</div>
12196<a id="a2fe587812a8dd3e7d7419cbb84a7f4ff"></a>
12197<h2 class="memtitle"><span class="permalink"><a href="#a2fe587812a8dd3e7d7419cbb84a7f4ff">&#9670;&nbsp;</a></span>CreateMergerDescriptorForConcatenation()</h2>
12198
12199<div class="memitem">
12200<div class="memproto">
12201 <table class="memname">
12202 <tr>
12203 <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> armnn::CreateMergerDescriptorForConcatenation </td>
12204 <td>(</td>
12205 <td class="paramtype">TensorShapeIt&#160;</td>
12206 <td class="paramname"><em>first</em>, </td>
12207 </tr>
12208 <tr>
12209 <td class="paramkey"></td>
12210 <td></td>
12211 <td class="paramtype">TensorShapeIt&#160;</td>
12212 <td class="paramname"><em>last</em>, </td>
12213 </tr>
12214 <tr>
12215 <td class="paramkey"></td>
12216 <td></td>
12217 <td class="paramtype">unsigned int&#160;</td>
12218 <td class="paramname"><em>concatenationDimension</em>&#160;</td>
12219 </tr>
12220 <tr>
12221 <td></td>
12222 <td>)</td>
12223 <td></td><td></td>
12224 </tr>
12225 </table>
12226</div><div class="memdoc">
12227
12228<p class="definition">Definition at line <a class="el" href="_descriptors_8hpp_source.xhtml#l00232">232</a> of file <a class="el" href="_descriptors_8hpp_source.xhtml">Descriptors.hpp</a>.</p>
12229
12230<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00242">CreateDescriptorForConcatenation()</a>.</p>
12231<div class="fragment"><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="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a733ae6b70d0bfa43433c3e7606992328">CreateDescriptorForConcatenation</a>(first, last, concatenationDimension);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;}</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#l00242">Descriptors.hpp:242</a></div></div>
12232</div><!-- fragment -->
12233</div>
12234</div>
12235<a id="a5fbc1479db5f4ff70a750cf02d58971b"></a>
12236<h2 class="memtitle"><span class="permalink"><a href="#a5fbc1479db5f4ff70a750cf02d58971b">&#9670;&nbsp;</a></span>CreateNetworkWithActivationLayer()</h2>
12237
12238<div class="memitem">
12239<div class="memproto">
12240 <table class="memname">
12241 <tr>
12242 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithActivationLayer </td>
12243 <td>(</td>
12244 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
12245 <td class="paramname"><em>descriptor</em>, </td>
12246 </tr>
12247 <tr>
12248 <td class="paramkey"></td>
12249 <td></td>
12250 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
12251 <td class="paramname"><em>shape</em>&#160;</td>
12252 </tr>
12253 <tr>
12254 <td></td>
12255 <td>)</td>
12256 <td></td><td></td>
12257 </tr>
12258 </table>
12259</div><div class="memdoc">
12260
12261<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00295">295</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
12262
12263<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
12264
12265<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00406">BOOST_AUTO_TEST_CASE()</a>.</p>
12266<div class="fragment"><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;{</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(descriptor);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; activation-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12267<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
12268</div><!-- fragment -->
12269</div>
12270</div>
12271<a id="aad4b8cb9a4d882a48bc21510f0d1a938"></a>
12272<h2 class="memtitle"><span class="permalink"><a href="#aad4b8cb9a4d882a48bc21510f0d1a938">&#9670;&nbsp;</a></span>CreateNetworkWithFullyConnectedLayer()</h2>
12273
12274<div class="memitem">
12275<div class="memproto">
12276 <table class="memname">
12277 <tr>
12278 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithFullyConnectedLayer </td>
12279 <td>(</td>
12280 <td class="paramtype">const bool&#160;</td>
12281 <td class="paramname"><em>biasEnabled</em>, </td>
12282 </tr>
12283 <tr>
12284 <td class="paramkey"></td>
12285 <td></td>
12286 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
12287 <td class="paramname"><em>inputShape</em>, </td>
12288 </tr>
12289 <tr>
12290 <td class="paramkey"></td>
12291 <td></td>
12292 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
12293 <td class="paramname"><em>outputShape</em>&#160;</td>
12294 </tr>
12295 <tr>
12296 <td></td>
12297 <td>)</td>
12298 <td></td><td></td>
12299 </tr>
12300 </table>
12301</div><div class="memdoc">
12302
12303<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01060">1060</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
12304
12305<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00386">FullyConnectedDescriptor::m_BiasEnabled</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
12306
12307<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
12308<div class="fragment"><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;{</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; FullyConnectedDescriptor desc;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; desc.m_BiasEnabled = biasEnabled;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</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="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(inputShape, DataType::Float32);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keyword">const</span> TensorInfo outputInfo(outputShape, DataType::Float32);</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; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; ConstTensor weights(info, weightsData);</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">// Add the layers</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; IConnectableLayer* fullyConnected;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; Optional&lt;ConstTensor&gt; optionalBias;</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; std::vector&lt;float&gt; biasData{10.0f, 20.0f, 30.0f};</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span> (desc.m_BiasEnabled)</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; {</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; ConstTensor bias(info, biasData);</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; optionalBias = Optional&lt;ConstTensor&gt;(bias);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; }</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; fullyConnected = network-&gt;AddFullyConnectedLayer(desc, weights, optionalBias);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; input0-&gt;GetOutputSlot(0).Connect(fullyConnected-&gt;GetInputSlot(0));</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; fullyConnected-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; fullyConnected-&gt;GetOutputSlot(0).SetTensorInfo(outputInfo);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12309<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
12310</div><!-- fragment -->
12311</div>
12312</div>
12313<a id="aa9c6c1a7b5380a99a536f4740f87dd59"></a>
12314<h2 class="memtitle"><span class="permalink"><a href="#aa9c6c1a7b5380a99a536f4740f87dd59">&#9670;&nbsp;</a></span>CreateNetworkWithInputOutputLayers()</h2>
12315
12316<div class="memitem">
12317<div class="memproto">
12318 <table class="memname">
12319 <tr>
12320 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithInputOutputLayers </td>
12321 <td>(</td>
12322 <td class="paramname"></td><td>)</td>
12323 <td></td>
12324 </tr>
12325 </table>
12326</div><div class="memdoc">
12327
12328<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00316">316</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
12329
12330<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
12331
12332<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00345">BOOST_AUTO_TEST_CASE()</a>.</p>
12333<div class="fragment"><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// Add input/output layers</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; IConnectableLayer* inputLayer = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; inputLayer-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</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; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; TensorShape shape{8U};</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; inputLayer-&gt;GetOutputSlot(0).SetTensorInfo(info);</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; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12334<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
12335</div><!-- fragment -->
12336</div>
12337</div>
12338<a id="a9c91b774c3089c55df77cc3a42da72de"></a>
12339<h2 class="memtitle"><span class="permalink"><a href="#a9c91b774c3089c55df77cc3a42da72de">&#9670;&nbsp;</a></span>CreateNetworkWithSoftmaxLayer()</h2>
12340
12341<div class="memitem">
12342<div class="memproto">
12343 <table class="memname">
12344 <tr>
12345 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithSoftmaxLayer </td>
12346 <td>(</td>
12347 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
12348 <td class="paramname"><em>descriptor</em>, </td>
12349 </tr>
12350 <tr>
12351 <td class="paramkey"></td>
12352 <td></td>
12353 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
12354 <td class="paramname"><em>shape</em>&#160;</td>
12355 </tr>
12356 <tr>
12357 <td></td>
12358 <td>)</td>
12359 <td></td><td></td>
12360 </tr>
12361 </table>
12362</div><div class="memdoc">
12363
12364<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01466">1466</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
12365
12366<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
12367
12368<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01487">BOOST_AUTO_TEST_CASE()</a>.</p>
12369<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; IConnectableLayer* softmax = network-&gt;AddSoftmaxLayer(descriptor);</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; input0-&gt;GetOutputSlot(0).Connect(softmax-&gt;GetInputSlot(0));</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; softmax-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; softmax-&gt;GetOutputSlot(0).SetTensorInfo(info);</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; <span class="keywordflow">return</span> network;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
12370<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
12371</div><!-- fragment -->
12372</div>
12373</div>
12374<a id="a310dd804fd70eadb1e8854325e63f0bd"></a>
12375<h2 class="memtitle"><span class="permalink"><a href="#a310dd804fd70eadb1e8854325e63f0bd">&#9670;&nbsp;</a></span>CreateQuantizedConst()</h2>
12376
12377<div class="memitem">
12378<div class="memproto">
12379 <table class="memname">
12380 <tr>
12381 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> CreateQuantizedConst </td>
12382 <td>(</td>
12383 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;&#160;</td>
12384 <td class="paramname"><em>tensor</em>, </td>
12385 </tr>
12386 <tr>
12387 <td class="paramkey"></td>
12388 <td></td>
12389 <td class="paramtype">std::vector&lt; uint8_t &gt; &amp;&#160;</td>
12390 <td class="paramname"><em>backing</em>&#160;</td>
12391 </tr>
12392 <tr>
12393 <td></td>
12394 <td>)</td>
12395 <td></td><td></td>
12396 </tr>
12397 </table>
12398</div><div class="memdoc">
12399
12400<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_network_quantizer_utils_8cpp_source.xhtml">NetworkQuantizerUtils.cpp</a>.</p>
12401
12402<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00177">BaseTensor&lt; MemoryType &gt;::GetMemoryArea()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00023">QuantizeConstant()</a>.</p>
12403
12404<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00023">QuantizeConstant()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00146">QuantizerVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00204">QuantizerVisitor::VisitConstantLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00215">QuantizerVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00250">QuantizerVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00285">QuantizerVisitor::VisitFullyConnectedLayer()</a>, and <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00536">QuantizerVisitor::VisitTransposeConvolution2dLayer()</a>.</p>
12405<div class="fragment"><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="keywordtype">float</span> scale = 0.0f;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordtype">int</span> offset = 0;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="comment">// Reserve the backing memory</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; backing.resize(tensor.GetInfo().GetNumElements());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> type = tensor.GetInfo().GetDataType();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">switch</span>(type)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>(static_cast&lt;const float*&gt;(tensor.GetMemoryArea()),</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; backing.data(),</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; backing.size(),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; scale,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; offset);</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; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Can&#39;t quantize unsupported data type&quot;</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</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; TensorInfo qInfo(tensor.GetInfo().GetShape(), DataType::QAsymmU8, scale, offset);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> ConstTensor(qInfo, backing);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
12406<div class="ttc" id="namespacearmnn_xhtml_a0e2bce68a1f7eff47ead4d9a2804eb91"><div class="ttname"><a href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">armnn::QuantizeConstant</a></div><div class="ttdeci">void QuantizeConstant(const srcType *src, uint8_t *dst, size_t numElements, float &amp;scale, int &amp;offset)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.xhtml#l00023">NetworkQuantizerUtils.hpp:23</a></div></div>
12407</div><!-- fragment -->
12408</div>
12409</div>
12410<a id="a120c131df35d78b3a56cb0f07decaf35"></a>
12411<h2 class="memtitle"><span class="permalink"><a href="#a120c131df35d78b3a56cb0f07decaf35">&#9670;&nbsp;</a></span>CreateStartOfLeakyReluNetwork()</h2>
12412
12413<div class="memitem">
12414<div class="memproto">
12415 <table class="memname">
12416 <tr>
12417 <td class="memname"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* armnn::CreateStartOfLeakyReluNetwork </td>
12418 <td>(</td>
12419 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
12420 <td class="paramname"><em>network</em>, </td>
12421 </tr>
12422 <tr>
12423 <td class="paramkey"></td>
12424 <td></td>
12425 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12426 <td class="paramname"><em>info</em>&#160;</td>
12427 </tr>
12428 <tr>
12429 <td></td>
12430 <td>)</td>
12431 <td></td><td></td>
12432 </tr>
12433 </table>
12434</div><div class="memdoc">
12435
12436<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01583">1583</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
12437
12438<p class="reference">References <a class="el" href="classarmnn_1_1_i_network.xhtml#aea068f6094e1c3bfcdf8167b68112632">INetwork::AddActivationLayer()</a>, <a class="el" href="classarmnn_1_1_i_network.xhtml#a87d5ec72def73ca14bd2987a024bd569">INetwork::AddInputLayer()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00037">ActivationDescriptor::m_A</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00039">ActivationDescriptor::m_B</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00035">ActivationDescriptor::m_Function</a>, and <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>.</p>
12439
12440<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01620">BOOST_AUTO_TEST_CASE()</a>.</p>
12441<div class="fragment"><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;{</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; ActivationDescriptor activationDescriptor;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; activationDescriptor.m_Function = ActivationFunction::LeakyReLu;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; activationDescriptor.m_A = 3.5f;</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; activationDescriptor.m_B = -10.0f;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; IConnectableLayer* activation = network-&gt;AddActivationLayer(activationDescriptor);</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <span class="comment">// Establish connections</span></div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; input0-&gt;GetOutputSlot(0).Connect(activation-&gt;GetInputSlot(0));</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; activation-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="keywordflow">return</span> activation;</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;}</div></div><!-- fragment -->
12442</div>
12443</div>
12444<a id="a1ec6b4c20ed294a96cf94c33c24caaf5"></a>
12445<h2 class="memtitle"><span class="permalink"><a href="#a1ec6b4c20ed294a96cf94c33c24caaf5">&#9670;&nbsp;</a></span>CreateSupportedBackends()</h2>
12446
12447<div class="memitem">
12448<div class="memproto">
12449 <table class="memname">
12450 <tr>
12451 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> CreateSupportedBackends </td>
12452 <td>(</td>
12453 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
12454 <td class="paramname"><em>handleFactoryRegistry</em>, </td>
12455 </tr>
12456 <tr>
12457 <td class="paramkey"></td>
12458 <td></td>
12459 <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
12460 <td class="paramname"><em>backendSettings</em>&#160;</td>
12461 </tr>
12462 <tr>
12463 <td></td>
12464 <td>)</td>
12465 <td></td><td></td>
12466 </tr>
12467 </table>
12468</div><div class="memdoc">
12469
12470<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00409">409</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
12471
12472<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistryInstance()</a>, and <a class="el" href="_backend_settings_8hpp_source.xhtml#l00020">BackendSettings::m_SupportedBackends</a>.</p>
12473
12474<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
12475<div class="fragment"><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;{</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; backendRegistry = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; selectedBackend : backendSettings.m_SupportedBackends)</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; <span class="keyword">auto</span> backendFactory = backendRegistry.GetFactory(selectedBackend);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keyword">auto</span> backendObjPtr = backendFactory();</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; BOOST_ASSERT(backendObjPtr);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; backendObjPtr-&gt;RegisterTensorHandleFactories(handleFactoryRegistry);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; backends[backendObjPtr-&gt;GetId()] = std::move(backendObjPtr);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> backends;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistry.cpp:13</a></div></div>
12476<div class="ttc" id="namespacearmnn_xhtml_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00305">Network.hpp:305</a></div></div>
12477</div><!-- fragment -->
12478</div>
12479</div>
12480<a id="a5aae369ef847a00062925cea8e9be9c4"></a>
12481<h2 class="memtitle"><span class="permalink"><a href="#a5aae369ef847a00062925cea8e9be9c4">&#9670;&nbsp;</a></span>Debug()</h2>
12482
12483<div class="memitem">
12484<div class="memproto">
12485 <table class="memname">
12486 <tr>
12487 <td class="memname">void Debug </td>
12488 <td>(</td>
12489 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12490 <td class="paramname"><em>inputInfo</em>, </td>
12491 </tr>
12492 <tr>
12493 <td class="paramkey"></td>
12494 <td></td>
12495 <td class="paramtype">const T *&#160;</td>
12496 <td class="paramname"><em>inputData</em>, </td>
12497 </tr>
12498 <tr>
12499 <td class="paramkey"></td>
12500 <td></td>
12501 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12502 <td class="paramname"><em>guid</em>, </td>
12503 </tr>
12504 <tr>
12505 <td class="paramkey"></td>
12506 <td></td>
12507 <td class="paramtype">const std::string &amp;&#160;</td>
12508 <td class="paramname"><em>layerName</em>, </td>
12509 </tr>
12510 <tr>
12511 <td class="paramkey"></td>
12512 <td></td>
12513 <td class="paramtype">unsigned int&#160;</td>
12514 <td class="paramname"><em>slotIndex</em>&#160;</td>
12515 </tr>
12516 <tr>
12517 <td></td>
12518 <td>)</td>
12519 <td></td><td></td>
12520 </tr>
12521 </table>
12522</div><div class="memdoc">
12523
12524<p class="definition">Definition at line <a class="el" href="_debug_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_debug_8cpp_source.xhtml">Debug.cpp</a>.</p>
12525
12526<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a43791bdad23b9c3dd62711c03f793881">Debug&lt; BFloat16 &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a26abbe393a88835dd569523bec69719b">Debug&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a3b0ab9518e3fd6a0447c174df57a313c">Debug&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#acc771f233bb7884932260ba353118b46">Debug&lt; int16_t &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a7c1cb9cf0678f74b1dcfff310d1475fd">Debug&lt; int32_t &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#ac2167b3a09fab7c9b58af461bd990c3b">Debug&lt; int8_t &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a1121718a486db835afa99328650e7e89">Debug&lt; uint8_t &gt;()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
12527
12528<p class="reference">Referenced by <a class="el" href="_ref_debug_workload_8cpp_source.xhtml#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>.</p>
12529<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputInfo.GetNumDimensions();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElements = inputInfo.GetNumElements();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</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;unsigned int&gt; strides(numDims, 0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; strides[numDims - 1] = inputShape[numDims - 1];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 2; i &lt;= numDims; i++)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; strides[numDims - i] = strides[numDims - i + 1] * inputShape[numDims - i];</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;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerGuid\&quot;: &quot;</span> &lt;&lt; guid &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;layerName\&quot;: \&quot;&quot;</span> &lt;&lt; layerName &lt;&lt; <span class="stringliteral">&quot;\&quot;, &quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;outputSlot\&quot;: &quot;</span> &lt;&lt; slotIndex &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;shape\&quot;: &quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</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="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::cout &lt;&lt; inputShape[i];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (i != numDims - 1)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;], &quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;min\&quot;: &quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(*std::min_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</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; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;max\&quot;: &quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(*std::max_element(inputData, inputData + numElements)) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;\&quot;data\&quot;: &quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</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; <span class="keywordflow">if</span> (i % strides[j] == 0)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> ;</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"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; std::cout &lt;&lt; boost::numeric_cast&lt;float&gt;(inputData[i]);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; numDims; j++)</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="keywordflow">if</span> ((i+1) % strides[j] == 0)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; std::cout &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> ;</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; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (i != numElements - 1)</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; std::cout &lt;&lt; <span class="stringliteral">&quot;, &quot;</span>;</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; }</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; std::cout &lt;&lt; <span class="stringliteral">&quot; }&quot;</span> &lt;&lt; std::endl;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
12530</div><!-- fragment -->
12531</div>
12532</div>
12533<a id="a43791bdad23b9c3dd62711c03f793881"></a>
12534<h2 class="memtitle"><span class="permalink"><a href="#a43791bdad23b9c3dd62711c03f793881">&#9670;&nbsp;</a></span>Debug< BFloat16 >()</h2>
12535
12536<div class="memitem">
12537<div class="memproto">
12538 <table class="memname">
12539 <tr>
12540 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> &gt; </td>
12541 <td>(</td>
12542 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12543 <td class="paramname"><em>inputInfo</em>, </td>
12544 </tr>
12545 <tr>
12546 <td class="paramkey"></td>
12547 <td></td>
12548 <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
12549 <td class="paramname"><em>inputData</em>, </td>
12550 </tr>
12551 <tr>
12552 <td class="paramkey"></td>
12553 <td></td>
12554 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12555 <td class="paramname"><em>guid</em>, </td>
12556 </tr>
12557 <tr>
12558 <td class="paramkey"></td>
12559 <td></td>
12560 <td class="paramtype">const std::string &amp;&#160;</td>
12561 <td class="paramname"><em>layerName</em>, </td>
12562 </tr>
12563 <tr>
12564 <td class="paramkey"></td>
12565 <td></td>
12566 <td class="paramtype">unsigned int&#160;</td>
12567 <td class="paramname"><em>slotIndex</em>&#160;</td>
12568 </tr>
12569 <tr>
12570 <td></td>
12571 <td>)</td>
12572 <td></td><td></td>
12573 </tr>
12574 </table>
12575</div><div class="memdoc">
12576
12577<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12578
12579</div>
12580</div>
12581<a id="a26abbe393a88835dd569523bec69719b"></a>
12582<h2 class="memtitle"><span class="permalink"><a href="#a26abbe393a88835dd569523bec69719b">&#9670;&nbsp;</a></span>Debug< float >()</h2>
12583
12584<div class="memitem">
12585<div class="memproto">
12586 <table class="memname">
12587 <tr>
12588 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; float &gt; </td>
12589 <td>(</td>
12590 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12591 <td class="paramname"><em>inputInfo</em>, </td>
12592 </tr>
12593 <tr>
12594 <td class="paramkey"></td>
12595 <td></td>
12596 <td class="paramtype">const float *&#160;</td>
12597 <td class="paramname"><em>inputData</em>, </td>
12598 </tr>
12599 <tr>
12600 <td class="paramkey"></td>
12601 <td></td>
12602 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12603 <td class="paramname"><em>guid</em>, </td>
12604 </tr>
12605 <tr>
12606 <td class="paramkey"></td>
12607 <td></td>
12608 <td class="paramtype">const std::string &amp;&#160;</td>
12609 <td class="paramname"><em>layerName</em>, </td>
12610 </tr>
12611 <tr>
12612 <td class="paramkey"></td>
12613 <td></td>
12614 <td class="paramtype">unsigned int&#160;</td>
12615 <td class="paramname"><em>slotIndex</em>&#160;</td>
12616 </tr>
12617 <tr>
12618 <td></td>
12619 <td>)</td>
12620 <td></td><td></td>
12621 </tr>
12622 </table>
12623</div><div class="memdoc">
12624
12625<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12626
12627</div>
12628</div>
12629<a id="a3b0ab9518e3fd6a0447c174df57a313c"></a>
12630<h2 class="memtitle"><span class="permalink"><a href="#a3b0ab9518e3fd6a0447c174df57a313c">&#9670;&nbsp;</a></span>Debug< Half >()</h2>
12631
12632<div class="memitem">
12633<div class="memproto">
12634 <table class="memname">
12635 <tr>
12636 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
12637 <td>(</td>
12638 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12639 <td class="paramname"><em>inputInfo</em>, </td>
12640 </tr>
12641 <tr>
12642 <td class="paramkey"></td>
12643 <td></td>
12644 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
12645 <td class="paramname"><em>inputData</em>, </td>
12646 </tr>
12647 <tr>
12648 <td class="paramkey"></td>
12649 <td></td>
12650 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12651 <td class="paramname"><em>guid</em>, </td>
12652 </tr>
12653 <tr>
12654 <td class="paramkey"></td>
12655 <td></td>
12656 <td class="paramtype">const std::string &amp;&#160;</td>
12657 <td class="paramname"><em>layerName</em>, </td>
12658 </tr>
12659 <tr>
12660 <td class="paramkey"></td>
12661 <td></td>
12662 <td class="paramtype">unsigned int&#160;</td>
12663 <td class="paramname"><em>slotIndex</em>&#160;</td>
12664 </tr>
12665 <tr>
12666 <td></td>
12667 <td>)</td>
12668 <td></td><td></td>
12669 </tr>
12670 </table>
12671</div><div class="memdoc">
12672
12673<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12674
12675</div>
12676</div>
12677<a id="acc771f233bb7884932260ba353118b46"></a>
12678<h2 class="memtitle"><span class="permalink"><a href="#acc771f233bb7884932260ba353118b46">&#9670;&nbsp;</a></span>Debug< int16_t >()</h2>
12679
12680<div class="memitem">
12681<div class="memproto">
12682 <table class="memname">
12683 <tr>
12684 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int16_t &gt; </td>
12685 <td>(</td>
12686 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12687 <td class="paramname"><em>inputInfo</em>, </td>
12688 </tr>
12689 <tr>
12690 <td class="paramkey"></td>
12691 <td></td>
12692 <td class="paramtype">const int16_t *&#160;</td>
12693 <td class="paramname"><em>inputData</em>, </td>
12694 </tr>
12695 <tr>
12696 <td class="paramkey"></td>
12697 <td></td>
12698 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12699 <td class="paramname"><em>guid</em>, </td>
12700 </tr>
12701 <tr>
12702 <td class="paramkey"></td>
12703 <td></td>
12704 <td class="paramtype">const std::string &amp;&#160;</td>
12705 <td class="paramname"><em>layerName</em>, </td>
12706 </tr>
12707 <tr>
12708 <td class="paramkey"></td>
12709 <td></td>
12710 <td class="paramtype">unsigned int&#160;</td>
12711 <td class="paramname"><em>slotIndex</em>&#160;</td>
12712 </tr>
12713 <tr>
12714 <td></td>
12715 <td>)</td>
12716 <td></td><td></td>
12717 </tr>
12718 </table>
12719</div><div class="memdoc">
12720
12721<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12722
12723</div>
12724</div>
12725<a id="a7c1cb9cf0678f74b1dcfff310d1475fd"></a>
12726<h2 class="memtitle"><span class="permalink"><a href="#a7c1cb9cf0678f74b1dcfff310d1475fd">&#9670;&nbsp;</a></span>Debug< int32_t >()</h2>
12727
12728<div class="memitem">
12729<div class="memproto">
12730 <table class="memname">
12731 <tr>
12732 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int32_t &gt; </td>
12733 <td>(</td>
12734 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12735 <td class="paramname"><em>inputInfo</em>, </td>
12736 </tr>
12737 <tr>
12738 <td class="paramkey"></td>
12739 <td></td>
12740 <td class="paramtype">const int32_t *&#160;</td>
12741 <td class="paramname"><em>inputData</em>, </td>
12742 </tr>
12743 <tr>
12744 <td class="paramkey"></td>
12745 <td></td>
12746 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12747 <td class="paramname"><em>guid</em>, </td>
12748 </tr>
12749 <tr>
12750 <td class="paramkey"></td>
12751 <td></td>
12752 <td class="paramtype">const std::string &amp;&#160;</td>
12753 <td class="paramname"><em>layerName</em>, </td>
12754 </tr>
12755 <tr>
12756 <td class="paramkey"></td>
12757 <td></td>
12758 <td class="paramtype">unsigned int&#160;</td>
12759 <td class="paramname"><em>slotIndex</em>&#160;</td>
12760 </tr>
12761 <tr>
12762 <td></td>
12763 <td>)</td>
12764 <td></td><td></td>
12765 </tr>
12766 </table>
12767</div><div class="memdoc">
12768
12769<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12770
12771</div>
12772</div>
12773<a id="ac2167b3a09fab7c9b58af461bd990c3b"></a>
12774<h2 class="memtitle"><span class="permalink"><a href="#ac2167b3a09fab7c9b58af461bd990c3b">&#9670;&nbsp;</a></span>Debug< int8_t >()</h2>
12775
12776<div class="memitem">
12777<div class="memproto">
12778 <table class="memname">
12779 <tr>
12780 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int8_t &gt; </td>
12781 <td>(</td>
12782 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12783 <td class="paramname"><em>inputInfo</em>, </td>
12784 </tr>
12785 <tr>
12786 <td class="paramkey"></td>
12787 <td></td>
12788 <td class="paramtype">const int8_t *&#160;</td>
12789 <td class="paramname"><em>inputData</em>, </td>
12790 </tr>
12791 <tr>
12792 <td class="paramkey"></td>
12793 <td></td>
12794 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12795 <td class="paramname"><em>guid</em>, </td>
12796 </tr>
12797 <tr>
12798 <td class="paramkey"></td>
12799 <td></td>
12800 <td class="paramtype">const std::string &amp;&#160;</td>
12801 <td class="paramname"><em>layerName</em>, </td>
12802 </tr>
12803 <tr>
12804 <td class="paramkey"></td>
12805 <td></td>
12806 <td class="paramtype">unsigned int&#160;</td>
12807 <td class="paramname"><em>slotIndex</em>&#160;</td>
12808 </tr>
12809 <tr>
12810 <td></td>
12811 <td>)</td>
12812 <td></td><td></td>
12813 </tr>
12814 </table>
12815</div><div class="memdoc">
12816
12817<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12818
12819</div>
12820</div>
12821<a id="a1121718a486db835afa99328650e7e89"></a>
12822<h2 class="memtitle"><span class="permalink"><a href="#a1121718a486db835afa99328650e7e89">&#9670;&nbsp;</a></span>Debug< uint8_t >()</h2>
12823
12824<div class="memitem">
12825<div class="memproto">
12826 <table class="memname">
12827 <tr>
12828 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; uint8_t &gt; </td>
12829 <td>(</td>
12830 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12831 <td class="paramname"><em>inputInfo</em>, </td>
12832 </tr>
12833 <tr>
12834 <td class="paramkey"></td>
12835 <td></td>
12836 <td class="paramtype">const uint8_t *&#160;</td>
12837 <td class="paramname"><em>inputData</em>, </td>
12838 </tr>
12839 <tr>
12840 <td class="paramkey"></td>
12841 <td></td>
12842 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
12843 <td class="paramname"><em>guid</em>, </td>
12844 </tr>
12845 <tr>
12846 <td class="paramkey"></td>
12847 <td></td>
12848 <td class="paramtype">const std::string &amp;&#160;</td>
12849 <td class="paramname"><em>layerName</em>, </td>
12850 </tr>
12851 <tr>
12852 <td class="paramkey"></td>
12853 <td></td>
12854 <td class="paramtype">unsigned int&#160;</td>
12855 <td class="paramname"><em>slotIndex</em>&#160;</td>
12856 </tr>
12857 <tr>
12858 <td></td>
12859 <td>)</td>
12860 <td></td><td></td>
12861 </tr>
12862 </table>
12863</div><div class="memdoc">
12864
12865<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
12866
12867</div>
12868</div>
12869<a id="ab023d9a7687e35c0f108458a094c1f56"></a>
12870<h2 class="memtitle"><span class="permalink"><a href="#ab023d9a7687e35c0f108458a094c1f56">&#9670;&nbsp;</a></span>DepthToSpace()</h2>
12871
12872<div class="memitem">
12873<div class="memproto">
12874 <table class="memname">
12875 <tr>
12876 <td class="memname">void DepthToSpace </td>
12877 <td>(</td>
12878 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12879 <td class="paramname"><em>inputInfo</em>, </td>
12880 </tr>
12881 <tr>
12882 <td class="paramkey"></td>
12883 <td></td>
12884 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
12885 <td class="paramname"><em>descriptor</em>, </td>
12886 </tr>
12887 <tr>
12888 <td class="paramkey"></td>
12889 <td></td>
12890 <td class="paramtype">const void *&#160;</td>
12891 <td class="paramname"><em>inputData</em>, </td>
12892 </tr>
12893 <tr>
12894 <td class="paramkey"></td>
12895 <td></td>
12896 <td class="paramtype">void *&#160;</td>
12897 <td class="paramname"><em>outputData</em>, </td>
12898 </tr>
12899 <tr>
12900 <td class="paramkey"></td>
12901 <td></td>
12902 <td class="paramtype">unsigned int&#160;</td>
12903 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
12904 </tr>
12905 <tr>
12906 <td></td>
12907 <td>)</td>
12908 <td></td><td></td>
12909 </tr>
12910 </table>
12911</div><div class="memdoc">
12912
12913<p class="definition">Definition at line <a class="el" href="_depth_to_space_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_depth_to_space_8cpp_source.xhtml">DepthToSpace.cpp</a>.</p>
12914
12915<p class="reference">References <a class="el" href="_depth_to_space_8cpp_source.xhtml#l00018">DepthToSpace()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="_permute_8cpp_source.xhtml#l00121">armnnUtils::Permute()</a>.</p>
12916
12917<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l00624">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_depth_to_space_8cpp_source.xhtml#l00018">DepthToSpace()</a>.</p>
12918<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(blockSize != 0u);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batches = inputShape[0];</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; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a> dataLayoutIndexed(descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inDepth = inputShape[dataLayoutIndexed.GetChannelsIndex()];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inHeight = inputShape[dataLayoutIndexed.GetHeightIndex()];</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inWidth = inputShape[dataLayoutIndexed.GetWidthIndex()];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outDepth = inDepth / (blockSize * blockSize);</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="comment">// The 4D input data can be interpreted as 6D (implicitly reshaped) as follows:</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// [batch, block size, block size, inDepth, inHeight, inWidth] for NCHW and</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="comment">// [batch, inHeight, inWidth, blockSize, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// DepthToSpace can then be implemented as a permutation in 6D resulting in</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// the following shapes:</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; <span class="comment">// [batch, outDepth, inHeight, blockSize, inWidth, blockSize] for NCHW and</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// [batch, inHeight, blockSize, inWidth, blockSize, outDepth] for NHWC.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// NOTE:</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// Since 6D tensors are not currently supported, in practice we need to handle each</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="comment">// batch separately and execute 5D permutations</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> permDestShape;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> permVector{};</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a> == DataLayout::NCHW)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>({ outDepth, inHeight, blockSize, inWidth, blockSize });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; permVector = { 2, 4, 0, 1, 3 };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; permDestShape = <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>({ inHeight, blockSize, inWidth, blockSize, outDepth });</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; permVector = { 0, 2, 1, 3, 4 };</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;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numElementsPerBatch = inputShape.<a class="code" href="classarmnn_1_1_tensor_shape.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>() / batches;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchIndex = 0u; batchIndex &lt; batches; ++batchIndex)</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="keyword">const</span> uintptr_t batchDataOffset = batchIndex * (numElementsPerBatch * dataTypeSize);</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; <a class="code" href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(permDestShape,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; permVector,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; static_cast&lt;const void*&gt;(reinterpret_cast&lt;const uint8_t*&gt;(inputData) + batchDataOffset),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; static_cast&lt;void*&gt;(reinterpret_cast&lt;uint8_t*&gt;(outputData) + batchDataOffset),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; dataTypeSize);</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;}</div><div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml_a8846406ac37fbd2204f0be16ee05d5b7"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">armnn::TensorShape::GetNumElements</a></div><div class="ttdeci">unsigned int GetNumElements() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8cpp_source.xhtml#l00106">Tensor.cpp:106</a></div></div>
12919<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#l00088">Tensor.hpp:88</a></div></div>
12920<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>
12921<div class="ttc" id="namespacearmnn_utils_xhtml_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00121">Permute.cpp:121</a></div></div>
12922<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
12923<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#l00173">Types.hpp:173</a></div></div>
12924<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_xhtml_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00827">Descriptors.hpp:827</a></div></div>
12925<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00830">Descriptors.hpp:830</a></div></div>
12926</div><!-- fragment -->
12927</div>
12928</div>
12929<a id="acae7e910f899ae67340c9ce29e406a86"></a>
12930<h2 class="memtitle"><span class="permalink"><a href="#acae7e910f899ae67340c9ce29e406a86">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[1/4]</span></h2>
12931
12932<div class="memitem">
12933<div class="memproto">
12934 <table class="memname">
12935 <tr>
12936 <td class="memname">void Dequantize </td>
12937 <td>(</td>
12938 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
12939 <td class="paramname"><em>inputDecoder</em>, </td>
12940 </tr>
12941 <tr>
12942 <td class="paramkey"></td>
12943 <td></td>
12944 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
12945 <td class="paramname"><em>outputEncoder</em>, </td>
12946 </tr>
12947 <tr>
12948 <td class="paramkey"></td>
12949 <td></td>
12950 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12951 <td class="paramname"><em>inputInfo</em>, </td>
12952 </tr>
12953 <tr>
12954 <td class="paramkey"></td>
12955 <td></td>
12956 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12957 <td class="paramname"><em>outputInfo</em>&#160;</td>
12958 </tr>
12959 <tr>
12960 <td></td>
12961 <td>)</td>
12962 <td></td><td></td>
12963 </tr>
12964 </table>
12965</div><div class="memdoc">
12966
12967<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.xhtml">Dequantize.cpp</a>.</p>
12968
12969<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
12970<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(outputInfo);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; BOOST_ASSERT(inputInfo.GetNumElements() == outputInfo.GetNumElements());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; inputInfo.GetNumElements(); i++)</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">// inputDecoder.Get() dequantizes the data element from whatever</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// type is given by inputInfo to fp32 (If MakeDecoder supports that dequantization)</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// outputEncoder.Set() transforms the data element to whatever type is</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// given by outputInfo (if MakeEncoder supports that transformation)</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; ++inputDecoder;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
12971<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>
12972<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
12973</div><!-- fragment -->
12974</div>
12975</div>
12976<a id="a4144d7535639c617fca0d095379493f0"></a>
12977<h2 class="memtitle"><span class="permalink"><a href="#a4144d7535639c617fca0d095379493f0">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[2/4]</span></h2>
12978
12979<div class="memitem">
12980<div class="memproto">
12981 <table class="memname">
12982 <tr>
12983 <td class="memname">std::vector&lt;float&gt; armnn::Dequantize </td>
12984 <td>(</td>
12985 <td class="paramtype">const T *&#160;</td>
12986 <td class="paramname"><em>quant</em>, </td>
12987 </tr>
12988 <tr>
12989 <td class="paramkey"></td>
12990 <td></td>
12991 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
12992 <td class="paramname"><em>info</em>&#160;</td>
12993 </tr>
12994 <tr>
12995 <td></td>
12996 <td>)</td>
12997 <td></td><td></td>
12998 </tr>
12999 </table>
13000</div><div class="memdoc">
13001
13002<p>u8 helpers </p>
13003
13004<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00076">76</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
13005
13006<p class="reference">References <a class="el" href="_types_utils_8cpp_source.xhtml#l00047">Dequantize()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
13007<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::vector&lt;float&gt; ret(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements());</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</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; ret[i] = <a class="code" href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a>(quant[i], <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdoc">Dequantize an 8-bit data type into a floating point data type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.xhtml#l00047">TypesUtils.cpp:47</a></div></div>
13008<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
13009</div><!-- fragment -->
13010</div>
13011</div>
13012<a id="a1204727d8ce3ee1e60daf08079eb892e"></a>
13013<h2 class="memtitle"><span class="permalink"><a href="#a1204727d8ce3ee1e60daf08079eb892e">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[3/4]</span></h2>
13014
13015<div class="memitem">
13016<div class="memproto">
13017<table class="mlabels">
13018 <tr>
13019 <td class="mlabels-left">
13020 <table class="memname">
13021 <tr>
13022 <td class="memname">void armnn::Dequantize </td>
13023 <td>(</td>
13024 <td class="paramtype">const T *&#160;</td>
13025 <td class="paramname"><em>inputData</em>, </td>
13026 </tr>
13027 <tr>
13028 <td class="paramkey"></td>
13029 <td></td>
13030 <td class="paramtype">float *&#160;</td>
13031 <td class="paramname"><em>outputData</em>, </td>
13032 </tr>
13033 <tr>
13034 <td class="paramkey"></td>
13035 <td></td>
13036 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13037 <td class="paramname"><em>info</em>&#160;</td>
13038 </tr>
13039 <tr>
13040 <td></td>
13041 <td>)</td>
13042 <td></td><td></td>
13043 </tr>
13044 </table>
13045 </td>
13046 <td class="mlabels-right">
13047<span class="mlabels"><span class="mlabel">inline</span></span> </td>
13048 </tr>
13049</table>
13050</div><div class="memdoc">
13051
13052<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00087">87</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
13053
13054<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
13055<div class="fragment"><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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; outputData[i] = Dequantize&lt;T&gt;(inputData[i], <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
13056</div><!-- fragment -->
13057</div>
13058</div>
13059<a id="a855293b1be0581fb61ef6a1c5b027d0f"></a>
13060<h2 class="memtitle"><span class="permalink"><a href="#a855293b1be0581fb61ef6a1c5b027d0f">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[4/4]</span></h2>
13061
13062<div class="memitem">
13063<div class="memproto">
13064 <table class="memname">
13065 <tr>
13066 <td class="memname">float Dequantize </td>
13067 <td>(</td>
13068 <td class="paramtype">QuantizedType&#160;</td>
13069 <td class="paramname"><em>value</em>, </td>
13070 </tr>
13071 <tr>
13072 <td class="paramkey"></td>
13073 <td></td>
13074 <td class="paramtype">float&#160;</td>
13075 <td class="paramname"><em>scale</em>, </td>
13076 </tr>
13077 <tr>
13078 <td class="paramkey"></td>
13079 <td></td>
13080 <td class="paramtype">int32_t&#160;</td>
13081 <td class="paramname"><em>offset</em>&#160;</td>
13082 </tr>
13083 <tr>
13084 <td></td>
13085 <td>)</td>
13086 <td></td><td></td>
13087 </tr>
13088 </table>
13089</div><div class="memdoc">
13090
13091<p>Dequantize an 8-bit data type into a floating point data type. </p>
13092<dl class="params"><dt>Parameters</dt><dd>
13093 <table class="params">
13094 <tr><td class="paramname">value</td><td>- The value to dequantize. </td></tr>
13095 <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
13096 <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
13097 </table>
13098 </dd>
13099</dl>
13100<dl class="section return"><dt>Returns</dt><dd>- The dequantized value calculated as (value-offset)*scale. </dd></dl>
13101
13102<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.xhtml#l00047">47</a> of file <a class="el" href="_types_utils_8cpp_source.xhtml">TypesUtils.cpp</a>.</p>
13103
13104<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
13105
13106<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l00745">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00031">SelectiveQuantizer&lt; T, DoQuantize &gt;::Dequantize()</a>, and <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00076">Dequantize()</a>.</p>
13107<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; BOOST_ASSERT(!IsNan(value));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> dequantized = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(value - offset) * scale;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> dequantized;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
13108</div><!-- fragment -->
13109</div>
13110</div>
13111<a id="ae76ce23fa9fc18e56448d52b37dd3f32"></a>
13112<h2 class="memtitle"><span class="permalink"><a href="#ae76ce23fa9fc18e56448d52b37dd3f32">&#9670;&nbsp;</a></span>DetectionPostProcess()</h2>
13113
13114<div class="memitem">
13115<div class="memproto">
13116 <table class="memname">
13117 <tr>
13118 <td class="memname">void DetectionPostProcess </td>
13119 <td>(</td>
13120 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13121 <td class="paramname"><em>boxEncodingsInfo</em>, </td>
13122 </tr>
13123 <tr>
13124 <td class="paramkey"></td>
13125 <td></td>
13126 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13127 <td class="paramname"><em>scoresInfo</em>, </td>
13128 </tr>
13129 <tr>
13130 <td class="paramkey"></td>
13131 <td></td>
13132 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13133 <td class="paramname"><em>anchorsInfo</em>, </td>
13134 </tr>
13135 <tr>
13136 <td class="paramkey"></td>
13137 <td></td>
13138 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13139 <td class="paramname"><em>detectionBoxesInfo</em>, </td>
13140 </tr>
13141 <tr>
13142 <td class="paramkey"></td>
13143 <td></td>
13144 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13145 <td class="paramname"><em>detectionClassesInfo</em>, </td>
13146 </tr>
13147 <tr>
13148 <td class="paramkey"></td>
13149 <td></td>
13150 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13151 <td class="paramname"><em>detectionScoresInfo</em>, </td>
13152 </tr>
13153 <tr>
13154 <td class="paramkey"></td>
13155 <td></td>
13156 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13157 <td class="paramname"><em>numDetectionsInfo</em>, </td>
13158 </tr>
13159 <tr>
13160 <td class="paramkey"></td>
13161 <td></td>
13162 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
13163 <td class="paramname"><em>desc</em>, </td>
13164 </tr>
13165 <tr>
13166 <td class="paramkey"></td>
13167 <td></td>
13168 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13169 <td class="paramname"><em>boxEncodings</em>, </td>
13170 </tr>
13171 <tr>
13172 <td class="paramkey"></td>
13173 <td></td>
13174 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13175 <td class="paramname"><em>scores</em>, </td>
13176 </tr>
13177 <tr>
13178 <td class="paramkey"></td>
13179 <td></td>
13180 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13181 <td class="paramname"><em>anchors</em>, </td>
13182 </tr>
13183 <tr>
13184 <td class="paramkey"></td>
13185 <td></td>
13186 <td class="paramtype">float *&#160;</td>
13187 <td class="paramname"><em>detectionBoxes</em>, </td>
13188 </tr>
13189 <tr>
13190 <td class="paramkey"></td>
13191 <td></td>
13192 <td class="paramtype">float *&#160;</td>
13193 <td class="paramname"><em>detectionClasses</em>, </td>
13194 </tr>
13195 <tr>
13196 <td class="paramkey"></td>
13197 <td></td>
13198 <td class="paramtype">float *&#160;</td>
13199 <td class="paramname"><em>detectionScores</em>, </td>
13200 </tr>
13201 <tr>
13202 <td class="paramkey"></td>
13203 <td></td>
13204 <td class="paramtype">float *&#160;</td>
13205 <td class="paramname"><em>numDetections</em>&#160;</td>
13206 </tr>
13207 <tr>
13208 <td></td>
13209 <td>)</td>
13210 <td></td><td></td>
13211 </tr>
13212 </table>
13213</div><div class="memdoc">
13214
13215<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">141</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
13216
13217<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00103">AllocateOutputData()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00018">GenerateRangeK()</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00547">DetectionPostProcessDescriptor::m_ScaleH</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00545">DetectionPostProcessDescriptor::m_ScaleW</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00541">DetectionPostProcessDescriptor::m_ScaleX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00543">DetectionPostProcessDescriptor::m_ScaleY</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">NonMaxSuppression()</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, <a class="el" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00025">TopKSort()</a>.</p>
13218
13219<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.xhtml#l00072">DetectionPostProcessTestImpl()</a>.</p>
13220<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a>, detectionClassesInfo, detectionScoresInfo, numDetectionsInfo);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// Transform center-size format which is (ycenter, xcenter, height, width) to box-corner format,</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// which represents the lower left corner and the upper right corner (ymin, xmin, ymax, xmax)</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; std::vector&lt;float&gt; boxCorners(boxEncodingsInfo.GetNumElements());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBoxes = boxEncodingsInfo.GetShape()[1];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numScores = <a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a>.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8846406ac37fbd2204f0be16ee05d5b7">GetNumElements</a>();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="comment">// Y</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> boxEncodingY = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">float</span> anchorY = anchors.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// X</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">float</span> boxEncodingX = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">float</span> anchorX = anchors.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</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; <span class="comment">// H</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">float</span> boxEncodingH = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">float</span> anchorH = anchors.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</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; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// W</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">float</span> boxEncodingW = boxEncodings.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">float</span> anchorW = anchors.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</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; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">float</span> yCentre = boxEncodingY / desc.m_ScaleY * anchorH + anchorY;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">float</span> xCentre = boxEncodingX / desc.m_ScaleX * anchorW + anchorX;</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; <span class="keywordtype">float</span> halfH = 0.5f * expf(boxEncodingH / desc.m_ScaleH) * anchorH;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">float</span> halfW = 0.5f * expf(boxEncodingW / desc.m_ScaleW) * anchorW;</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexY = i * 4;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexX = indexY + 1;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexH = indexX + 1;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexW = indexH + 1;</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="comment">// ymin</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; boxCorners[indexY] = yCentre - halfH;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// xmin</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; boxCorners[indexX] = xCentre - halfW;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// ymax</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; boxCorners[indexH] = yCentre + halfH;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// xmax</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; boxCorners[indexW] = xCentre + halfW;</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; BOOST_ASSERT(boxCorners[indexY] &lt; boxCorners[indexH]);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; BOOST_ASSERT(boxCorners[indexX] &lt; boxCorners[indexW]);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesWithBg = desc.m_NumClasses + 1;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// Decode scores</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; std::vector&lt;float&gt; decodedScores;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; decodedScores.reserve(numScores);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; numScores; ++i)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; decodedScores.emplace_back(scores.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; ++<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Perform Non Max Suppression.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (desc.m_UseRegularNms)</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; <span class="comment">// Perform Regular NMS.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="comment">// For each class, perform NMS and select max detection numbers of the highest score across all classes.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; std::vector&lt;float&gt; classScores(numBoxes);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; std::vector&lt;unsigned int&gt; selectedBoxesAfterNms;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; selectedBoxesAfterNms.reserve(numBoxes);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; std::vector&lt;float&gt; selectedScoresAfterNms;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; selectedBoxesAfterNms.reserve(numScores);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; std::vector&lt;unsigned int&gt; selectedClasses;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; desc.m_NumClasses; ++c)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// For each boxes, get scores of the boxes for the class c.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; classScores[i] = decodedScores[i * numClassesWithBg + c + 1];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.xhtml#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes,</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; boxCorners,</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; classScores,</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; desc.m_DetectionsPerClass,</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; desc.m_NmsIouThreshold);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; selectedIndices.size(); ++i)</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; selectedBoxesAfterNms.push_back(selectedIndices[i]);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; selectedScoresAfterNms.push_back(classScores[selectedIndices[i]]);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; selectedClasses.push_back(c);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// Select max detection numbers of the highest score across all classes</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedBoxesAfterNms.size());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</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; <span class="comment">// Sort the max scores among the selected indices.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::vector&lt;unsigned int&gt; outputIndices = <a class="code" href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numSelected);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numOutput, outputIndices.data(), selectedScoresAfterNms.data(), numSelected);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, outputIndices,</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; selectedBoxesAfterNms, selectedClasses, selectedScoresAfterNms,</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// Perform Fast NMS.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Select max scores of boxes and perform NMS on max scores,</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// select max detection numbers of the highest score</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numClassesPerBox = std::min(desc.m_MaxClassesPerDetection, desc.m_NumClasses);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; std::vector&lt;float&gt; maxScores;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; std::vector&lt;unsigned int&gt;boxIndices;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; std::vector&lt;unsigned int&gt;maxScoreClasses;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> box = 0; box &lt; numBoxes; ++box)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> scoreIndex = box * numClassesWithBg + 1;</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; <span class="comment">// Get the max scores of the box.</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::vector&lt;unsigned int&gt; maxScoreIndices = <a class="code" href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(desc.m_NumClasses);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numClassesPerBox, maxScoreIndices.data(),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; decodedScores.data() + scoreIndex, desc.m_NumClasses);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numClassesPerBox; ++i)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; maxScores.push_back(decodedScores[scoreIndex + maxScoreIndices[i]]);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; maxScoreClasses.push_back(maxScoreIndices[i]);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; boxIndices.push_back(box);</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; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// Perform NMS on max scores</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; std::vector&lt;unsigned int&gt; selectedIndices = <a class="code" href="namespacearmnn.xhtml#ac8c641d4a69c9a85c487cfbc7ea4d73c">NonMaxSuppression</a>(numBoxes, boxCorners, maxScores,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; desc.m_MaxDetections,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; desc.m_NmsIouThreshold);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numSelected = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(selectedIndices.size());</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(desc.m_MaxDetections, numSelected);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae8dcbb74cf0c855724f12833a55a5684">AllocateOutputData</a>(detectionBoxesInfo.GetShape()[1], numOutput, boxCorners, selectedIndices,</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; boxIndices, maxScoreClasses, maxScores,</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; detectionBoxes, detectionScores, detectionClasses, numDetections);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;}</div><div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_a358cb7cd3c0647b25be049fd734b8c22"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#a358cb7cd3c0647b25be049fd734b8c22">anchorsInfo</a></div><div class="ttdeci">armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)</div></div>
13221<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
13222<div class="ttc" id="namespacearmnn_xhtml_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00018">DetectionPostProcess.cpp:18</a></div></div>
13223<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>
13224<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
13225<div class="ttc" id="namespacearmnn_xhtml_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00025">DetectionPostProcess.cpp:25</a></div></div>
13226<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
13227<div class="ttc" id="namespacearmnn_xhtml_ae8dcbb74cf0c855724f12833a55a5684"><div class="ttname"><a href="namespacearmnn.xhtml#ae8dcbb74cf0c855724f12833a55a5684">armnn::AllocateOutputData</a></div><div class="ttdeci">void AllocateOutputData(unsigned int numOutput, unsigned int numSelected, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; unsigned int &gt; &amp;outputIndices, const std::vector&lt; unsigned int &gt; &amp;selectedBoxes, const std::vector&lt; unsigned int &gt; &amp;selectedClasses, const std::vector&lt; float &gt; &amp;selectedScores, float *detectionBoxes, float *detectionScores, float *detectionClasses, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00103">DetectionPostProcess.cpp:103</a></div></div>
13228<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
13229<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_a64c1dd1b6dd60be9f4a16db9c8f427a5"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#a64c1dd1b6dd60be9f4a16db9c8f427a5">scoresInfo</a></div><div class="ttdeci">armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)</div></div>
13230<div class="ttc" id="namespacearmnn_xhtml_ac8c641d4a69c9a85c487cfbc7ea4d73c"><div class="ttname"><a href="namespacearmnn.xhtml#ac8c641d4a69c9a85c487cfbc7ea4d73c">armnn::NonMaxSuppression</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; NonMaxSuppression(unsigned int numBoxes, const std::vector&lt; float &gt; &amp;boxCorners, const std::vector&lt; float &gt; &amp;scores, float nmsScoreThreshold, unsigned int maxDetection, float nmsIouThreshold)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">DetectionPostProcess.cpp:50</a></div></div>
13231<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#l00093">Tensor.hpp:93</a></div></div>
13232<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a></div><div class="ttdeci">std::vector&lt; float &gt; anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })</div></div>
13233</div><!-- fragment -->
13234</div>
13235</div>
13236<a id="a50805c29c35b9903c2dea301d8091711"></a>
13237<h2 class="memtitle"><span class="permalink"><a href="#a50805c29c35b9903c2dea301d8091711">&#9670;&nbsp;</a></span>ExtractJsonObjects()</h2>
13238
13239<div class="memitem">
13240<div class="memproto">
13241 <table class="memname">
13242 <tr>
13243 <td class="memname">void armnn::ExtractJsonObjects </td>
13244 <td>(</td>
13245 <td class="paramtype">unsigned int&#160;</td>
13246 <td class="paramname"><em>inferenceIndex</em>, </td>
13247 </tr>
13248 <tr>
13249 <td class="paramkey"></td>
13250 <td></td>
13251 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
13252 <td class="paramname"><em>parentEvent</em>, </td>
13253 </tr>
13254 <tr>
13255 <td class="paramkey"></td>
13256 <td></td>
13257 <td class="paramtype"><a class="el" href="structarmnn_1_1_json_child_object.xhtml">JsonChildObject</a> &amp;&#160;</td>
13258 <td class="paramname"><em>parentObject</em>, </td>
13259 </tr>
13260 <tr>
13261 <td class="paramkey"></td>
13262 <td></td>
13263 <td class="paramtype">std::map&lt; const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *, std::vector&lt; const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&gt;&gt;&#160;</td>
13264 <td class="paramname"><em>descendantsMap</em>&#160;</td>
13265 </tr>
13266 <tr>
13267 <td></td>
13268 <td>)</td>
13269 <td></td><td></td>
13270 </tr>
13271 </table>
13272</div><div class="memdoc">
13273
13274<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00285">285</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
13275
13276<p class="reference">References <a class="el" href="_json_printer_8hpp_source.xhtml#l00036">JsonChildObject::AddChild()</a>, <a class="el" href="_json_printer_8hpp_source.xhtml#l00031">JsonChildObject::AddMeasurement()</a>, <a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>, <a class="el" href="_json_printer_8hpp_source.xhtml#l00041">JsonChildObject::GetChild()</a>, <a class="el" href="_profiling_event_8cpp_source.xhtml#l00054">Event::GetMeasurements()</a>, <a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>, <a class="el" href="_json_printer_8hpp_source.xhtml#l00051">JsonChildObject::NumChildren()</a>, <a class="el" href="_json_printer_8hpp_source.xhtml#l00056">JsonChildObject::SetType()</a>, and <a class="el" href="_json_printer_8hpp_source.xhtml#l00046">JsonChildObject::SetUnit()</a>.</p>
13277
13278<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00331">Profiler::Print()</a>.</p>
13279<div class="fragment"><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; BOOST_ASSERT(parentEvent);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; std::vector&lt;Measurement&gt; instrumentMeasurements = parentEvent-&gt;GetMeasurements();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> childIdx=0;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> measurementIndex = 0; measurementIndex &lt; instrumentMeasurements.size(); ++measurementIndex, ++childIdx)</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; <span class="keywordflow">if</span> (inferenceIndex == 0)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// Only add kernel measurement once, in case of multiple inferences</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; JsonChildObject measurementObject{instrumentMeasurements[measurementIndex].m_Name};</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; measurementObject.SetUnit(instrumentMeasurements[measurementIndex].m_Unit);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; measurementObject.SetType(JsonObjectType::Measurement);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; BOOST_ASSERT(parentObject.NumChildren() == childIdx);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; parentObject.AddChild(measurementObject);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; parentObject.GetChild(childIdx).AddMeasurement(instrumentMeasurements[measurementIndex].m_Value);</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;</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="keyword">auto</span> childEventsIt = descendantsMap.find(parentEvent);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (childEventsIt != descendantsMap.end())</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> childEvent : childEventsIt-&gt;second)</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">if</span> (inferenceIndex == 0)</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// Only add second level once, in case of multiple inferences</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; JsonChildObject childObject{childEvent-&gt;GetName()};</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; childObject.SetType(JsonObjectType::Event);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; parentObject.AddChild(childObject);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// Recursively process children. In reality this won&#39;t be very deep recursion. ~4-6 levels deep.</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespacearmnn.xhtml#a50805c29c35b9903c2dea301d8091711">ExtractJsonObjects</a>(inferenceIndex, childEvent, parentObject.GetChild(childIdx), descendantsMap);</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; childIdx++;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; }</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;}</div><div class="ttc" id="namespacearmnn_xhtml_a50805c29c35b9903c2dea301d8091711"><div class="ttname"><a href="namespacearmnn.xhtml#a50805c29c35b9903c2dea301d8091711">armnn::ExtractJsonObjects</a></div><div class="ttdeci">void ExtractJsonObjects(unsigned int inferenceIndex, const Event *parentEvent, JsonChildObject &amp;parentObject, std::map&lt; const Event *, std::vector&lt; const Event *&gt;&gt; descendantsMap)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_8cpp_source.xhtml#l00285">Profiling.cpp:285</a></div></div>
13280</div><!-- fragment -->
13281</div>
13282</div>
13283<a id="ab3c0b7e1a78b1b98c24934221f36a7c3"></a>
13284<h2 class="memtitle"><span class="permalink"><a href="#ab3c0b7e1a78b1b98c24934221f36a7c3">&#9670;&nbsp;</a></span>FakeQuantization()</h2>
13285
13286<div class="memitem">
13287<div class="memproto">
13288 <table class="memname">
13289 <tr>
13290 <td class="memname">void armnn::FakeQuantization </td>
13291 <td>(</td>
13292 <td class="paramtype">const float *&#160;</td>
13293 <td class="paramname"><em>inputData</em>, </td>
13294 </tr>
13295 <tr>
13296 <td class="paramkey"></td>
13297 <td></td>
13298 <td class="paramtype">float *&#160;</td>
13299 <td class="paramname"><em>outputData</em>, </td>
13300 </tr>
13301 <tr>
13302 <td class="paramkey"></td>
13303 <td></td>
13304 <td class="paramtype">uint32_t&#160;</td>
13305 <td class="paramname"><em>numElements</em>, </td>
13306 </tr>
13307 <tr>
13308 <td class="paramkey"></td>
13309 <td></td>
13310 <td class="paramtype">float&#160;</td>
13311 <td class="paramname"><em>min</em>, </td>
13312 </tr>
13313 <tr>
13314 <td class="paramkey"></td>
13315 <td></td>
13316 <td class="paramtype">float&#160;</td>
13317 <td class="paramname"><em>max</em>&#160;</td>
13318 </tr>
13319 <tr>
13320 <td></td>
13321 <td>)</td>
13322 <td></td><td></td>
13323 </tr>
13324 </table>
13325</div><div class="memdoc">
13326
13327<p class="definition">Definition at line <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml">RefFakeQuantizationFloat32Workload.cpp</a>.</p>
13328
13329<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
13330<div class="fragment"><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="keywordtype">float</span> scale = (max - min) / 255.f;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; int32_t offset = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;((-min * 255.f) / (max - min));</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="keywordflow">for</span> (uint32_t i = 0; i &lt; numElements; i++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; outputData[i] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(armnn::Quantize&lt;uint8_t&gt;(inputData[i], scale, offset));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
13331</div><!-- fragment -->
13332</div>
13333</div>
13334<a id="a6e64aab48baba12883c73e90bfd07e77"></a>
13335<h2 class="memtitle"><span class="permalink"><a href="#a6e64aab48baba12883c73e90bfd07e77">&#9670;&nbsp;</a></span>FalseFunc()</h2>
13336
13337<div class="memitem">
13338<div class="memproto">
13339 <table class="memname">
13340 <tr>
13341 <td class="memname">bool armnn::FalseFunc </td>
13342 <td>(</td>
13343 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13344 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13345 </tr>
13346 <tr>
13347 <td class="paramkey"></td>
13348 <td></td>
13349 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13350 <td class="paramname"><em>params</em>&#160;</td>
13351 </tr>
13352 <tr>
13353 <td></td>
13354 <td>)</td>
13355 <td></td><td></td>
13356 </tr>
13357 </table>
13358</div><div class="memdoc">
13359
13360<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00062">62</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13361
13362<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>.</p>
13363<div class="fragment"><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="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(reasonIfUnsupported);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</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>
13364</div><!-- fragment -->
13365</div>
13366</div>
13367<a id="a621c8ffe11bba3d7ab304a9ad3feec2f"></a>
13368<h2 class="memtitle"><span class="permalink"><a href="#a621c8ffe11bba3d7ab304a9ad3feec2f">&#9670;&nbsp;</a></span>FalseFuncF16()</h2>
13369
13370<div class="memitem">
13371<div class="memproto">
13372 <table class="memname">
13373 <tr>
13374 <td class="memname">bool armnn::FalseFuncF16 </td>
13375 <td>(</td>
13376 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13377 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13378 </tr>
13379 <tr>
13380 <td class="paramkey"></td>
13381 <td></td>
13382 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13383 <td class="paramname"><em>params</em>&#160;</td>
13384 </tr>
13385 <tr>
13386 <td></td>
13387 <td>)</td>
13388 <td></td><td></td>
13389 </tr>
13390 </table>
13391</div><div class="memdoc">
13392
13393<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00070">70</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13394
13395<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13396<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type&quot;</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</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>
13397<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13398</div><!-- fragment -->
13399</div>
13400</div>
13401<a id="a02d627e25da543b79ee8a59a1193a426"></a>
13402<h2 class="memtitle"><span class="permalink"><a href="#a02d627e25da543b79ee8a59a1193a426">&#9670;&nbsp;</a></span>FalseFuncF32()</h2>
13403
13404<div class="memitem">
13405<div class="memproto">
13406 <table class="memname">
13407 <tr>
13408 <td class="memname">bool armnn::FalseFuncF32 </td>
13409 <td>(</td>
13410 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13411 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13412 </tr>
13413 <tr>
13414 <td class="paramkey"></td>
13415 <td></td>
13416 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13417 <td class="paramname"><em>params</em>&#160;</td>
13418 </tr>
13419 <tr>
13420 <td></td>
13421 <td>)</td>
13422 <td></td><td></td>
13423 </tr>
13424 </table>
13425</div><div class="memdoc">
13426
13427<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00078">78</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13428
13429<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13430<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type&quot;</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</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>
13431<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13432</div><!-- fragment -->
13433</div>
13434</div>
13435<a id="a07ae80b502ab664f1aaf7d6c00725982"></a>
13436<h2 class="memtitle"><span class="permalink"><a href="#a07ae80b502ab664f1aaf7d6c00725982">&#9670;&nbsp;</a></span>FalseFuncI32()</h2>
13437
13438<div class="memitem">
13439<div class="memproto">
13440 <table class="memname">
13441 <tr>
13442 <td class="memname">bool armnn::FalseFuncI32 </td>
13443 <td>(</td>
13444 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13445 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13446 </tr>
13447 <tr>
13448 <td class="paramkey"></td>
13449 <td></td>
13450 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13451 <td class="paramname"><em>params</em>&#160;</td>
13452 </tr>
13453 <tr>
13454 <td></td>
13455 <td>)</td>
13456 <td></td><td></td>
13457 </tr>
13458 </table>
13459</div><div class="memdoc">
13460
13461<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00094">94</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13462
13463<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13464<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with int32 data type&quot;</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</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>
13465<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13466</div><!-- fragment -->
13467</div>
13468</div>
13469<a id="a4e4802d0916cb8b7da508ab03ce1f163"></a>
13470<h2 class="memtitle"><span class="permalink"><a href="#a4e4802d0916cb8b7da508ab03ce1f163">&#9670;&nbsp;</a></span>FalseFuncU8()</h2>
13471
13472<div class="memitem">
13473<div class="memproto">
13474 <table class="memname">
13475 <tr>
13476 <td class="memname">bool armnn::FalseFuncU8 </td>
13477 <td>(</td>
13478 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13479 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13480 </tr>
13481 <tr>
13482 <td class="paramkey"></td>
13483 <td></td>
13484 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13485 <td class="paramname"><em>params</em>&#160;</td>
13486 </tr>
13487 <tr>
13488 <td></td>
13489 <td>)</td>
13490 <td></td><td></td>
13491 </tr>
13492 </table>
13493</div><div class="memdoc">
13494
13495<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00086">86</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13496
13497<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13498<div class="fragment"><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with 8-bit data type&quot;</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;}</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>
13499<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13500</div><!-- fragment -->
13501</div>
13502</div>
13503<a id="a216969fbba54df95de3e68435b8074d7"></a>
13504<h2 class="memtitle"><span class="permalink"><a href="#a216969fbba54df95de3e68435b8074d7">&#9670;&nbsp;</a></span>FalseInputFuncF16()</h2>
13505
13506<div class="memitem">
13507<div class="memproto">
13508 <table class="memname">
13509 <tr>
13510 <td class="memname">bool armnn::FalseInputFuncF16 </td>
13511 <td>(</td>
13512 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13513 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13514 </tr>
13515 <tr>
13516 <td class="paramkey"></td>
13517 <td></td>
13518 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13519 <td class="paramname"><em>params</em>&#160;</td>
13520 </tr>
13521 <tr>
13522 <td></td>
13523 <td>)</td>
13524 <td></td><td></td>
13525 </tr>
13526 </table>
13527</div><div class="memdoc">
13528
13529<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00110">110</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13530
13531<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13532<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type input&quot;</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</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>
13533<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13534</div><!-- fragment -->
13535</div>
13536</div>
13537<a id="a0b55e509dd7e3bfea233a389a18c21e6"></a>
13538<h2 class="memtitle"><span class="permalink"><a href="#a0b55e509dd7e3bfea233a389a18c21e6">&#9670;&nbsp;</a></span>FalseInputFuncF32()</h2>
13539
13540<div class="memitem">
13541<div class="memproto">
13542 <table class="memname">
13543 <tr>
13544 <td class="memname">bool armnn::FalseInputFuncF32 </td>
13545 <td>(</td>
13546 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13547 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13548 </tr>
13549 <tr>
13550 <td class="paramkey"></td>
13551 <td></td>
13552 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13553 <td class="paramname"><em>params</em>&#160;</td>
13554 </tr>
13555 <tr>
13556 <td></td>
13557 <td>)</td>
13558 <td></td><td></td>
13559 </tr>
13560 </table>
13561</div><div class="memdoc">
13562
13563<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00102">102</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13564
13565<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13566<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type input&quot;</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</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>
13567<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13568</div><!-- fragment -->
13569</div>
13570</div>
13571<a id="a2febf8d85a92b69e4a677a7c632418ee"></a>
13572<h2 class="memtitle"><span class="permalink"><a href="#a2febf8d85a92b69e4a677a7c632418ee">&#9670;&nbsp;</a></span>FalseOutputFuncF16()</h2>
13573
13574<div class="memitem">
13575<div class="memproto">
13576 <table class="memname">
13577 <tr>
13578 <td class="memname">bool armnn::FalseOutputFuncF16 </td>
13579 <td>(</td>
13580 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13581 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13582 </tr>
13583 <tr>
13584 <td class="paramkey"></td>
13585 <td></td>
13586 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13587 <td class="paramname"><em>params</em>&#160;</td>
13588 </tr>
13589 <tr>
13590 <td></td>
13591 <td>)</td>
13592 <td></td><td></td>
13593 </tr>
13594 </table>
13595</div><div class="memdoc">
13596
13597<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00126">126</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13598
13599<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13600<div class="fragment"><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float16 data type output&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}</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>
13601<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13602</div><!-- fragment -->
13603</div>
13604</div>
13605<a id="ad3d0087e2533d808debd5c959fb3901f"></a>
13606<h2 class="memtitle"><span class="permalink"><a href="#ad3d0087e2533d808debd5c959fb3901f">&#9670;&nbsp;</a></span>FalseOutputFuncF32()</h2>
13607
13608<div class="memitem">
13609<div class="memproto">
13610 <table class="memname">
13611 <tr>
13612 <td class="memname">bool armnn::FalseOutputFuncF32 </td>
13613 <td>(</td>
13614 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
13615 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
13616 </tr>
13617 <tr>
13618 <td class="paramkey"></td>
13619 <td></td>
13620 <td class="paramtype">Params &amp;&amp;...&#160;</td>
13621 <td class="paramname"><em>params</em>&#160;</td>
13622 </tr>
13623 <tr>
13624 <td></td>
13625 <td>)</td>
13626 <td></td><td></td>
13627 </tr>
13628 </table>
13629</div><div class="memdoc">
13630
13631<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00118">118</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
13632
13633<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, and <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">SetValueChecked()</a>.</p>
13634<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">SetValueChecked</a>(reasonIfUnsupported, <span class="stringliteral">&quot;Layer is not supported with float32 data type output&quot;</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</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>
13635<div class="ttc" id="namespacearmnn_xhtml_a13c7d751e4d37f65a6d40c3c6e50d2b8"><div class="ttname"><a href="namespacearmnn.xhtml#a13c7d751e4d37f65a6d40c3c6e50d2b8">armnn::SetValueChecked</a></div><div class="ttdeci">void SetValueChecked(Optional&lt; T &amp;&gt; optionalRef, V &amp;&amp;val)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_common_8hpp_source.xhtml#l00017">LayerSupportCommon.hpp:17</a></div></div>
13636</div><!-- fragment -->
13637</div>
13638</div>
13639<a id="a1b90db39f6a9ebd11591e76fa364b06f"></a>
13640<h2 class="memtitle"><span class="permalink"><a href="#a1b90db39f6a9ebd11591e76fa364b06f">&#9670;&nbsp;</a></span>FindKernelMeasurements()</h2>
13641
13642<div class="memitem">
13643<div class="memproto">
13644 <table class="memname">
13645 <tr>
13646 <td class="memname">std::vector&lt;<a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a>&gt; armnn::FindKernelMeasurements </td>
13647 <td>(</td>
13648 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
13649 <td class="paramname"><em>event</em></td><td>)</td>
13650 <td></td>
13651 </tr>
13652 </table>
13653</div><div class="memdoc">
13654
13655<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00064">64</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
13656
13657<p class="reference">References <a class="el" href="_profiling_8cpp_source.xhtml#l00045">FindMeasurement()</a>, <a class="el" href="_profiling_event_8cpp_source.xhtml#l00054">Event::GetMeasurements()</a>, <a class="el" href="_instrument_8hpp_source.xhtml#l00043">Measurement::m_Value</a>, and <a class="el" href="_wall_clock_timer_8hpp_source.xhtml#l00063">WallClockTimer::WALL_CLOCK_TIME</a>.</p>
13658<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</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; std::vector&lt;Measurement&gt; measurements;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Search through the measurements.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (measurement.m_Name.rfind(<span class="stringliteral">&quot;OpenClKernelTimer&quot;</span>, 0) == 0</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; || measurement.m_Name.rfind(<span class="stringliteral">&quot;NeonKernelTimer&quot;</span>, 0) == 0)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; measurements.push_back(measurement);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</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; <span class="keywordflow">return</span> measurements;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div></div><!-- fragment -->
13659</div>
13660</div>
13661<a id="a12d3ffe11b54c0aaa59bdd8415701c36"></a>
13662<h2 class="memtitle"><span class="permalink"><a href="#a12d3ffe11b54c0aaa59bdd8415701c36">&#9670;&nbsp;</a></span>FindMeasurement()</h2>
13663
13664<div class="memitem">
13665<div class="memproto">
13666 <table class="memname">
13667 <tr>
13668 <td class="memname"><a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a> armnn::FindMeasurement </td>
13669 <td>(</td>
13670 <td class="paramtype">const std::string &amp;&#160;</td>
13671 <td class="paramname"><em>name</em>, </td>
13672 </tr>
13673 <tr>
13674 <td class="paramkey"></td>
13675 <td></td>
13676 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
13677 <td class="paramname"><em>event</em>&#160;</td>
13678 </tr>
13679 <tr>
13680 <td></td>
13681 <td>)</td>
13682 <td></td><td></td>
13683 </tr>
13684 </table>
13685</div><div class="memdoc">
13686
13687<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00045">45</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
13688
13689<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.xhtml#l00054">Event::GetMeasurements()</a>.</p>
13690
13691<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00115">Profiler::AnalyzeEventSequenceAndWriteResults()</a>, and <a class="el" href="_profiling_8cpp_source.xhtml#l00064">FindKernelMeasurements()</a>.</p>
13692<div class="fragment"><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; BOOST_ASSERT(event != <span class="keyword">nullptr</span>);</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">// Search though the measurements.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; measurement : event-&gt;GetMeasurements())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (measurement.m_Name == name)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// Measurement found.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> measurement;</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; }</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; <span class="comment">// Measurement not found.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">Measurement</a>{ <span class="stringliteral">&quot;&quot;</span>, 0.f, Measurement::Unit::TIME_MS };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"><div class="ttname"><a href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975">armnn::JsonObjectType::Measurement</a></div></div>
13693</div><!-- fragment -->
13694</div>
13695</div>
13696<a id="afce94270d9c4a51cd0c4ac6a58af4e26"></a>
13697<h2 class="memtitle"><span class="permalink"><a href="#afce94270d9c4a51cd0c4ac6a58af4e26">&#9670;&nbsp;</a></span>ForEachLayerInput()</h2>
13698
13699<div class="memitem">
13700<div class="memproto">
13701 <table class="memname">
13702 <tr>
13703 <td class="memname">void armnn::ForEachLayerInput </td>
13704 <td>(</td>
13705 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
13706 <td class="paramname"><em>layerInfos</em>, </td>
13707 </tr>
13708 <tr>
13709 <td class="paramkey"></td>
13710 <td></td>
13711 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
13712 <td class="paramname"><em>layerInfo</em>, </td>
13713 </tr>
13714 <tr>
13715 <td class="paramkey"></td>
13716 <td></td>
13717 <td class="paramtype">Delegate&#160;</td>
13718 <td class="paramname"><em>function</em>&#160;</td>
13719 </tr>
13720 <tr>
13721 <td></td>
13722 <td>)</td>
13723 <td></td><td></td>
13724 </tr>
13725 </table>
13726</div><div class="memdoc">
13727
13728<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00262">262</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml">SubgraphViewSelector.cpp</a>.</p>
13729
13730<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00231">Layer::GetInputSlots()</a>.</p>
13731
13732<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00304">AssignSplitId()</a>, and <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00369">IsReadyForSplitAssignment()</a>.</p>
13733<div class="fragment"><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;{</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; Layer&amp; layer = *layerInfo.m_Layer;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> inputSlot : layer.GetInputSlots())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">auto</span> connectedInput = boost::polymorphic_downcast&lt;OutputSlot*&gt;(inputSlot.GetConnection());</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; BOOST_ASSERT_MSG(connectedInput, <span class="stringliteral">&quot;Dangling input slot detected.&quot;</span>);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; Layer&amp; inputLayer = connectedInput-&gt;GetOwningLayer();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">auto</span> parentInfo = layerInfos.find(&amp;inputLayer);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (parentInfo != layerInfos.end())</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">function</span>(parentInfo-&gt;second);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div></div><!-- fragment -->
13734</div>
13735</div>
13736<a id="a49538fa883b70c944e437d65d6628eec"></a>
13737<h2 class="memtitle"><span class="permalink"><a href="#a49538fa883b70c944e437d65d6628eec">&#9670;&nbsp;</a></span>ForEachLayerOutput()</h2>
13738
13739<div class="memitem">
13740<div class="memproto">
13741 <table class="memname">
13742 <tr>
13743 <td class="memname">void armnn::ForEachLayerOutput </td>
13744 <td>(</td>
13745 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
13746 <td class="paramname"><em>layerInfos</em>, </td>
13747 </tr>
13748 <tr>
13749 <td class="paramkey"></td>
13750 <td></td>
13751 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
13752 <td class="paramname"><em>layerInfo</em>, </td>
13753 </tr>
13754 <tr>
13755 <td class="paramkey"></td>
13756 <td></td>
13757 <td class="paramtype">Delegate&#160;</td>
13758 <td class="paramname"><em>function</em>&#160;</td>
13759 </tr>
13760 <tr>
13761 <td></td>
13762 <td>)</td>
13763 <td></td><td></td>
13764 </tr>
13765 </table>
13766</div><div class="memdoc">
13767
13768<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00283">283</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml">SubgraphViewSelector.cpp</a>.</p>
13769
13770<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00232">Layer::GetOutputSlots()</a>.</p>
13771
13772<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
13773<div class="fragment"><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; Layer&amp; layer= *layerInfo.m_Layer;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outputSlot : layer.GetOutputSlots())</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; output : outputSlot.GetConnections())</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; Layer&amp; childLayer = output-&gt;GetOwningLayer();</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; <span class="keyword">auto</span> childInfo = layerInfos.find(&amp;childLayer);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (childInfo != layerInfos.end())</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">function</span>(childInfo-&gt;second);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; }</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; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;}</div></div><!-- fragment -->
13774</div>
13775</div>
13776<a id="ad34d1d5b1ca8f52dc296ecf52ba20c8a"></a>
13777<h2 class="memtitle"><span class="permalink"><a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">&#9670;&nbsp;</a></span>FullyConnected()</h2>
13778
13779<div class="memitem">
13780<div class="memproto">
13781 <table class="memname">
13782 <tr>
13783 <td class="memname">void FullyConnected </td>
13784 <td>(</td>
13785 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
13786 <td class="paramname"><em>rInputShape</em>, </td>
13787 </tr>
13788 <tr>
13789 <td class="paramkey"></td>
13790 <td></td>
13791 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13792 <td class="paramname"><em>rInputDecoder</em>, </td>
13793 </tr>
13794 <tr>
13795 <td class="paramkey"></td>
13796 <td></td>
13797 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
13798 <td class="paramname"><em>rOutputShape</em>, </td>
13799 </tr>
13800 <tr>
13801 <td class="paramkey"></td>
13802 <td></td>
13803 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
13804 <td class="paramname"><em>rOutputEncoder</em>, </td>
13805 </tr>
13806 <tr>
13807 <td class="paramkey"></td>
13808 <td></td>
13809 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13810 <td class="paramname"><em>rWeightDecoder</em>, </td>
13811 </tr>
13812 <tr>
13813 <td class="paramkey"></td>
13814 <td></td>
13815 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13816 <td class="paramname"><em>rBiasDecoder</em>, </td>
13817 </tr>
13818 <tr>
13819 <td class="paramkey"></td>
13820 <td></td>
13821 <td class="paramtype">const bool&#160;</td>
13822 <td class="paramname"><em>biasEnabled</em>, </td>
13823 </tr>
13824 <tr>
13825 <td class="paramkey"></td>
13826 <td></td>
13827 <td class="paramtype">const unsigned int&#160;</td>
13828 <td class="paramname"><em>K</em>, </td>
13829 </tr>
13830 <tr>
13831 <td class="paramkey"></td>
13832 <td></td>
13833 <td class="paramtype">const bool&#160;</td>
13834 <td class="paramname"><em>transposeWeights</em>&#160;</td>
13835 </tr>
13836 <tr>
13837 <td></td>
13838 <td>)</td>
13839 <td></td><td></td>
13840 </tr>
13841 </table>
13842</div><div class="memdoc">
13843
13844<p>Performs a matrix multiplication and optionally adds a bias. </p>
13845
13846<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_fully_connected_8cpp_source.xhtml">FullyConnected.cpp</a>.</p>
13847
13848<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
13849<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// Perform FullyConnected implementation</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputSize = rOutputShape[1];</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; rInputShape[0]; n++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelOutput = 0; channelOutput &lt; outputSize; channelOutput++)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> outval = 0.f;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelInput = 0; channelInput &lt; K; channelInput++)</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; <span class="keywordtype">float</span> weight;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span> (transposeWeights)</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; rWeightDecoder[channelOutput * K + channelInput];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; rWeightDecoder[channelInput * outputSize + channelOutput];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weight = rWeightDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; rInputDecoder[n * K + channelInput];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; outval += weight * rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (biasEnabled)</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; rBiasDecoder[channelOutput];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; outval += rBiasDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</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; rOutputEncoder[n * outputSize + channelOutput];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outval);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</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;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
13850<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
13851</div><!-- fragment -->
13852</div>
13853</div>
13854<a id="a66004b2326f8ccb1faa71d5efa186633"></a>
13855<h2 class="memtitle"><span class="permalink"><a href="#a66004b2326f8ccb1faa71d5efa186633">&#9670;&nbsp;</a></span>Gather()</h2>
13856
13857<div class="memitem">
13858<div class="memproto">
13859 <table class="memname">
13860 <tr>
13861 <td class="memname">void Gather </td>
13862 <td>(</td>
13863 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13864 <td class="paramname"><em>paramsInfo</em>, </td>
13865 </tr>
13866 <tr>
13867 <td class="paramkey"></td>
13868 <td></td>
13869 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13870 <td class="paramname"><em>indicesInfo</em>, </td>
13871 </tr>
13872 <tr>
13873 <td class="paramkey"></td>
13874 <td></td>
13875 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
13876 <td class="paramname"><em>outputInfo</em>, </td>
13877 </tr>
13878 <tr>
13879 <td class="paramkey"></td>
13880 <td></td>
13881 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
13882 <td class="paramname"><em>params</em>, </td>
13883 </tr>
13884 <tr>
13885 <td class="paramkey"></td>
13886 <td></td>
13887 <td class="paramtype">const int32_t *&#160;</td>
13888 <td class="paramname"><em>indices</em>, </td>
13889 </tr>
13890 <tr>
13891 <td class="paramkey"></td>
13892 <td></td>
13893 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
13894 <td class="paramname"><em>output</em>&#160;</td>
13895 </tr>
13896 <tr>
13897 <td></td>
13898 <td>)</td>
13899 <td></td><td></td>
13900 </tr>
13901 </table>
13902</div><div class="memdoc">
13903
13904<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml">Gather.cpp</a>.</p>
13905
13906<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
13907<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(outputInfo);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> TensorShape&amp; paramsShape = paramsInfo.GetShape();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paramsProduct = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1; i &lt; paramsInfo.GetNumDimensions(); ++i)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; paramsProduct = paramsProduct * paramsShape[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; indicesInfo.GetNumElements(); ++i)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(indices[i]);</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; BOOST_ASSERT(indices[i] &gt;= 0 &amp;&amp; indx &lt; paramsShape[0]);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> startOffset = indx * paramsProduct;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> endOffset = startOffset + paramsProduct;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = startOffset; j &lt; endOffset; ++j)</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"> 46</span>&#160; params[j];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">float</span> outputValue = params.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; output[outIndex];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(outputValue);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; ++outIndex;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</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; BOOST_ASSERT(outIndex == outputInfo.GetNumElements());</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
13908<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>
13909<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
13910<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
13911</div><!-- fragment -->
13912</div>
13913</div>
13914<a id="afb5b53a8b0c01d4f27830bef0f25ca09"></a>
13915<h2 class="memtitle"><span class="permalink"><a href="#afb5b53a8b0c01d4f27830bef0f25ca09">&#9670;&nbsp;</a></span>GatherTensorHandlePairs()</h2>
13916
13917<div class="memitem">
13918<div class="memproto">
13919 <table class="memname">
13920 <tr>
13921 <td class="memname">void armnn::GatherTensorHandlePairs </td>
13922 <td>(</td>
13923 <td class="paramtype">const DescriptorType &amp;&#160;</td>
13924 <td class="paramname"><em>descriptor</em>, </td>
13925 </tr>
13926 <tr>
13927 <td class="paramkey"></td>
13928 <td></td>
13929 <td class="paramtype">std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;&#160;</td>
13930 <td class="paramname"><em>tensorHandlePairs</em>&#160;</td>
13931 </tr>
13932 <tr>
13933 <td></td>
13934 <td>)</td>
13935 <td></td><td></td>
13936 </tr>
13937 </table>
13938</div><div class="memdoc">
13939
13940<p class="definition">Definition at line <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">192</a> of file <a class="el" href="_workload_utils_8hpp_source.xhtml">WorkloadUtils.hpp</a>.</p>
13941
13942<p class="reference">References <a class="el" href="_workload_utils_8cpp_source.xhtml#l00192">ConvertMaskToACLFormat()</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00013">PermuteTensor()</a>, and <a class="el" href="_workload_utils_8cpp_source.xhtml#l00036">ReshapeWeightsForAcl()</a>.</p>
13943
13944<p class="reference">Referenced by <a class="el" href="_mem_copy_workload_8cpp_source.xhtml#l00042">CopyMemGenericWorkload::CopyMemGenericWorkload()</a>, <a class="el" href="_neon_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00017">NeonConvertFp16ToFp32Workload::NeonConvertFp16ToFp32Workload()</a>, and <a class="el" href="_neon_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00018">NeonConvertFp32ToFp16Workload::NeonConvertFp32ToFp16Workload()</a>.</p>
13945<div class="fragment"><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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputs = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(descriptor.m_Inputs.size());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; tensorHandlePairs.reserve(numInputs);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numInputs; ++i)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; SrcTensorHandleType* <span class="keyword">const</span> srcTensorHandle =</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; boost::polymorphic_downcast&lt;SrcTensorHandleType*&gt;(descriptor.m_Inputs[i]);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; DstTensorHandleType* <span class="keyword">const</span> dstTensorHandle =</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; boost::polymorphic_downcast&lt;DstTensorHandleType*&gt;(descriptor.m_Outputs[i]);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; tensorHandlePairs.emplace_back(srcTensorHandle, dstTensorHandle);</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;}</div></div><!-- fragment -->
13946</div>
13947</div>
13948<a id="ae8ed5c640761fb6744aec0ee16388417"></a>
13949<h2 class="memtitle"><span class="permalink"><a href="#ae8ed5c640761fb6744aec0ee16388417">&#9670;&nbsp;</a></span>GenerateRangeK()</h2>
13950
13951<div class="memitem">
13952<div class="memproto">
13953 <table class="memname">
13954 <tr>
13955 <td class="memname">std::vector&lt;unsigned int&gt; armnn::GenerateRangeK </td>
13956 <td>(</td>
13957 <td class="paramtype">unsigned int&#160;</td>
13958 <td class="paramname"><em>k</em></td><td>)</td>
13959 <td></td>
13960 </tr>
13961 </table>
13962</div><div class="memdoc">
13963
13964<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
13965
13966<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">NonMaxSuppression()</a>.</p>
13967<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::vector&lt;unsigned int&gt; range(k);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; std::iota(range.begin(), range.end(), 0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">return</span> range;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div></div><!-- fragment -->
13968</div>
13969</div>
13970<a id="aa093207ea7c4e7a9c9abe40d2f57995b"></a>
13971<h2 class="memtitle"><span class="permalink"><a href="#aa093207ea7c4e7a9c9abe40d2f57995b">&#9670;&nbsp;</a></span>GetActivationFunctionAsCString()</h2>
13972
13973<div class="memitem">
13974<div class="memproto">
13975 <table class="memname">
13976 <tr>
13977 <td class="memname">constexpr char const* armnn::GetActivationFunctionAsCString </td>
13978 <td>(</td>
13979 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
13980 <td class="paramname"><em>activation</em></td><td>)</td>
13981 <td></td>
13982 </tr>
13983 </table>
13984</div><div class="memdoc">
13985
13986<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00027">27</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
13987
13988<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>, <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a>, and <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a>.</p>
13989
13990<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00042">StringifyLayerParameters&lt; ActivationDescriptor &gt;::Serialize()</a>.</p>
13991<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">switch</span> (activation)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sigmoid: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sigmoid&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> ActivationFunction::TanH: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TanH&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Linear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Linear&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> ActivationFunction::ReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ReLu&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> ActivationFunction::BoundedReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BoundedReLu&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> ActivationFunction::SoftReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SoftReLu&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> ActivationFunction::LeakyReLu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LeakyReLu&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Square: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Square&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> ActivationFunction::Elu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Elu&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> ActivationFunction::HardSwish: <span class="keywordflow">return</span> <span class="stringliteral">&quot;HardSwish&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div></div><!-- fragment -->
13992</div>
13993</div>
13994<a id="a5cda3502382f06a64c3cbeb1829bd850"></a>
13995<h2 class="memtitle"><span class="permalink"><a href="#a5cda3502382f06a64c3cbeb1829bd850">&#9670;&nbsp;</a></span>GetArgMinMaxFunctionAsCString()</h2>
13996
13997<div class="memitem">
13998<div class="memproto">
13999 <table class="memname">
14000 <tr>
14001 <td class="memname">constexpr char const* armnn::GetArgMinMaxFunctionAsCString </td>
14002 <td>(</td>
14003 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
14004 <td class="paramname"><em>function</em></td><td>)</td>
14005 <td></td>
14006 </tr>
14007 </table>
14008</div><div class="memdoc">
14009
14010<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00047">47</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14011
14012<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
14013<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">switch</span> (<span class="keyword">function</span>)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> ArgMinMaxFunction::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> ArgMinMaxFunction::Min: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Min&quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div></div><!-- fragment -->
14014</div>
14015</div>
14016<a id="a872803f5667392efc3c8e5607bd453ad"></a>
14017<h2 class="memtitle"><span class="permalink"><a href="#a872803f5667392efc3c8e5607bd453ad">&#9670;&nbsp;</a></span>GetBiasDataType()</h2>
14018
14019<div class="memitem">
14020<div class="memproto">
14021 <table class="memname">
14022 <tr>
14023 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> GetBiasDataType </td>
14024 <td>(</td>
14025 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
14026 <td class="paramname"><em>inputDataType</em></td><td>)</td>
14027 <td></td>
14028 </tr>
14029 </table>
14030</div><div class="memdoc">
14031
14032<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.xhtml#l00025">25</a> of file <a class="el" href="_workload_data_8cpp_source.xhtml">WorkloadData.cpp</a>.</p>
14033
14034<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="_exceptions_8hpp_source.xhtml#l00192">CHECK_LOCATION</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">GetDataTypeName()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00280">TensorInfo::GetQuantizationDim()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00237">TensorInfo::GetQuantizationScales()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_optional_8hpp_source.xhtml#l00053">OptionalBase::has_value()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00098">TensorInfo::HasMultipleQuantizationScales()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00241">IsQuantized8BitType()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00218">TensorInfo::IsTypeSpaceMatch()</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>, and <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; IsReference, T &gt;::value()</a>.</p>
14035
14036<p class="reference">Referenced by <a class="el" href="_layer_release_constant_data_test_8cpp_source.xhtml#l00075">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l02669">CompareDepthwiseConvolution2dTestImpl()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00966">FullyConnectedQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l01159">Convolution2dQueueDescriptor::Validate()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l01212">DepthwiseConvolution2dQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l02674">TransposeConvolution2dQueueDescriptor::Validate()</a>.</p>
14037<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">switch</span> (inputDataType)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> DataType::BFloat16:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> DataType::BFloat16;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> DataType::Float16;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> DataType::Signed32;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Invalid input data type&quot;</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> DataType::Float32;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}</div></div><!-- fragment -->
14038</div>
14039</div>
14040<a id="a83c4a275acf59f62b8387f389d0929d5"></a>
14041<h2 class="memtitle"><span class="permalink"><a href="#a83c4a275acf59f62b8387f389d0929d5">&#9670;&nbsp;</a></span>GetBiasTypeFromWeightsType()</h2>
14042
14043<div class="memitem">
14044<div class="memproto">
14045<table class="mlabels">
14046 <tr>
14047 <td class="mlabels-left">
14048 <table class="memname">
14049 <tr>
14050 <td class="memname"><a class="el" href="classarmnn_1_1_optional.xhtml">armnn::Optional</a>&lt;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&gt; armnn::GetBiasTypeFromWeightsType </td>
14051 <td>(</td>
14052 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">armnn::Optional</a>&lt; <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a> &gt;&#160;</td>
14053 <td class="paramname"><em>weightsType</em></td><td>)</td>
14054 <td></td>
14055 </tr>
14056 </table>
14057 </td>
14058 <td class="mlabels-right">
14059<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14060 </tr>
14061</table>
14062</div><div class="memdoc">
14063
14064<p class="definition">Definition at line <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_layer_support_rules_8hpp_source.xhtml">LayerSupportRules.hpp</a>.</p>
14065
14066<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>, and <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
14067
14068<p class="reference">Referenced by <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00128">BiasAndWeightsTypesCompatible::BiasAndWeightsTypesCompatible()</a>, <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00119">BiasAndWeightsTypesMatch::BiasAndWeightsTypesMatch()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.xhtml#l00071">FullyConnectedTest()</a>, and <a class="el" href="_workload_factory_8cpp_source.xhtml#l00045">IWorkloadFactory::IsLayerSupported()</a>.</p>
14069<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">if</span> (!weightsType)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">return</span> weightsType;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">switch</span>(weightsType.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>())</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> weightsType;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;GetBiasTypeFromWeightsType(): Unsupported data type.&quot;</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
14070<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
14071<div class="ttc" id="classarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
14072<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
14073<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
14074<div class="ttc" id="structarmnn_1_1_empty_optional_xhtml"><div class="ttname"><a href="structarmnn_1_1_empty_optional.xhtml">armnn::EmptyOptional</a></div><div class="ttdoc">EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00032">Optional.hpp:32</a></div></div>
14075<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
14076</div><!-- fragment -->
14077</div>
14078</div>
14079<a id="aabb76a77e95921785f576bb29b495cd8"></a>
14080<h2 class="memtitle"><span class="permalink"><a href="#aabb76a77e95921785f576bb29b495cd8">&#9670;&nbsp;</a></span>GetComparisonOperationAsCString()</h2>
14081
14082<div class="memitem">
14083<div class="memproto">
14084 <table class="memname">
14085 <tr>
14086 <td class="memname">constexpr char const* armnn::GetComparisonOperationAsCString </td>
14087 <td>(</td>
14088 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
14089 <td class="paramname"><em>operation</em></td><td>)</td>
14090 <td></td>
14091 </tr>
14092 </table>
14093</div><div class="memdoc">
14094
14095<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00057">57</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14096
14097<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>, <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a>, <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a>, <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a>, and <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a>.</p>
14098
14099<p class="reference">Referenced by <a class="el" href="_ref_comparison_workload_8cpp_source.xhtml#l00039">RefComparisonWorkload::Execute()</a>.</p>
14100<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">switch</span> (operation)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Equal: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Equal&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Greater: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Greater&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::GreaterOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GreaterOrEqual&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::Less: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Less&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::LessOrEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LessOrEqual&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> ComparisonOperation::NotEqual: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NotEqual&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</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;}</div></div><!-- fragment -->
14101</div>
14102</div>
14103<a id="a6bab17bfd45c2fa4592c431bc25ad10e"></a>
14104<h2 class="memtitle"><span class="permalink"><a href="#a6bab17bfd45c2fa4592c431bc25ad10e">&#9670;&nbsp;</a></span>GetComputeDeviceAsCString()</h2>
14105
14106<div class="memitem">
14107<div class="memproto">
14108 <table class="memname">
14109 <tr>
14110 <td class="memname">constexpr char const* armnn::GetComputeDeviceAsCString </td>
14111 <td>(</td>
14112 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&#160;</td>
14113 <td class="paramname"><em>compute</em></td><td>)</td>
14114 <td></td>
14115 </tr>
14116 </table>
14117</div><div class="memdoc">
14118
14119<p>Deprecated function that will be removed together with the Compute enum. </p>
14120
14121<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
14122
14123<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>.</p>
14124
14125<p class="reference">Referenced by <a class="el" href="_backend_id_tests_8cpp_source.xhtml#l00015">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_backend_id_8hpp_source.xhtml#l00047">operator&lt;&lt;()</a>.</p>
14126<div class="fragment"><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; <span class="keywordflow">switch</span> (compute)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;GpuAcc&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
14127<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
14128<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
14129</div><!-- fragment -->
14130</div>
14131</div>
14132<a id="aeef70b7611ae71e97ab55c75ef72b210"></a>
14133<h2 class="memtitle"><span class="permalink"><a href="#aeef70b7611ae71e97ab55c75ef72b210">&#9670;&nbsp;</a></span>GetDataLayoutName()</h2>
14134
14135<div class="memitem">
14136<div class="memproto">
14137 <table class="memname">
14138 <tr>
14139 <td class="memname">constexpr const char* armnn::GetDataLayoutName </td>
14140 <td>(</td>
14141 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
14142 <td class="paramname"><em>dataLayout</em></td><td>)</td>
14143 <td></td>
14144 </tr>
14145 </table>
14146</div><div class="memdoc">
14147
14148<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00190">190</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14149
14150<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
14151
14152<p class="reference">Referenced by <a class="el" href="_common_test_utils_8cpp_source.xhtml#l00054">MakeTensorShape()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00050">StringifyLayerParameters&lt; Convolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00076">StringifyLayerParameters&lt; BatchNormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00083">StringifyLayerParameters&lt; DepthwiseConvolution2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00240">StringifyLayerParameters&lt; L2NormalizationDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00247">StringifyLayerParameters&lt; BatchToSpaceNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00290">StringifyLayerParameters&lt; ResizeBilinearDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00307">StringifyLayerParameters&lt; SpaceToBatchNdDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00343">StringifyLayerParameters&lt; SpaceToDepthDescriptor &gt;::Serialize()</a>, <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00410">StringifyLayerParameters&lt; StridedSliceDescriptor &gt;::Serialize()</a>, and <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00473">StringifyLayerParameters&lt; TransposeConvolution2dDescriptor &gt;::Serialize()</a>.</p>
14153<div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NCHW&quot;</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NHWC&quot;</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div></div><!-- fragment -->
14154</div>
14155</div>
14156<a id="a81b5ff8545adad19a1c9d4ca076d552c"></a>
14157<h2 class="memtitle"><span class="permalink"><a href="#a81b5ff8545adad19a1c9d4ca076d552c">&#9670;&nbsp;</a></span>GetDataTypeName()</h2>
14158
14159<div class="memitem">
14160<div class="memproto">
14161 <table class="memname">
14162 <tr>
14163 <td class="memname">constexpr const char* armnn::GetDataTypeName </td>
14164 <td>(</td>
14165 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
14166 <td class="paramname"><em>dataType</em></td><td>)</td>
14167 <td></td>
14168 </tr>
14169 </table>
14170</div><div class="memdoc">
14171
14172<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">168</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14173
14174<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
14175
14176<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>, <a class="el" href="_utils_tests_8cpp_source.xhtml#l00061">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00345">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l00025">GetBiasDataType()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.xhtml#l02886">TfLiteParser::GetBuffer()</a>, <a class="el" href="_ref_transpose_workload_8hpp_source.xhtml#l00019">RefTransposeWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_permute_workload_8hpp_source.xhtml#l00019">RefPermuteWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_pad_workload_8hpp_source.xhtml#l00021">RefPadWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_ref_debug_workload_8hpp_source.xhtml#l00023">RefDebugWorkload&lt; DataType &gt;::GetName()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00152">armnnUtils::GetPerAxisParams()</a>, and <a class="el" href="_types_utils_8hpp_source.xhtml#l00296">VerifyTensorInfoDataType()</a>.</p>
14177<div class="fragment"><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">switch</span> (dataType)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float16&quot;</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">case</span> DataType::Float32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Float32&quot;</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmU8&quot;</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QAsymmS8&quot;</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymmS8&quot;</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm8PerAxis&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QSymm16&quot;</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Signed32&quot;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Boolean&quot;</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">case</span> DataType::BFloat16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BFloat16&quot;</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
14178<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
14179</div><!-- fragment -->
14180</div>
14181</div>
14182<a id="aa02b9e06fb20fa3c13da0427e6ee5ab2"></a>
14183<h2 class="memtitle"><span class="permalink"><a href="#aa02b9e06fb20fa3c13da0427e6ee5ab2">&#9670;&nbsp;</a></span>GetDataTypeSize()</h2>
14184
14185<div class="memitem">
14186<div class="memproto">
14187 <table class="memname">
14188 <tr>
14189 <td class="memname">constexpr unsigned int armnn::GetDataTypeSize </td>
14190 <td>(</td>
14191 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
14192 <td class="paramname"><em>dataType</em></td><td>)</td>
14193 <td></td>
14194 </tr>
14195 </table>
14196</div><div class="memdoc">
14197
14198<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00115">115</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14199
14200<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
14201
14202<p class="reference">Referenced by <a class="el" href="_utils_tests_8cpp_source.xhtml#l00018">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l00933">armnnTfParser::ConvertTfTensorDataType()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.xhtml#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.xhtml#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.xhtml#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_cpu_tensor_handle_8cpp_source.xhtml#l00015">GetUnpaddedTensorStrides()</a>, and <a class="el" href="_workload_utils_8cpp_source.xhtml#l00013">PermuteTensor()</a>.</p>
14203<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">switch</span> (dataType)</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; <span class="keywordflow">case</span> DataType::BFloat16:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">case</span> DataType::Float16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">case</span> DataType::Signed32: <span class="keywordflow">return</span> 4U;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16: <span class="keywordflow">return</span> 2U;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">case</span> DataType::Boolean: <span class="keywordflow">return</span> 1U;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> 0U;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
14204<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
14205</div><!-- fragment -->
14206</div>
14207</div>
14208<a id="ab03dcfb3b4019d8f58a67c41681951ae"></a>
14209<h2 class="memtitle"><span class="permalink"><a href="#ab03dcfb3b4019d8f58a67c41681951ae">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[1/2]</span></h2>
14210
14211<div class="memitem">
14212<div class="memproto">
14213 <table class="memname">
14214 <tr>
14215 <td class="memname">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a>* armnn::GetEventPtr </td>
14216 <td>(</td>
14217 <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
14218 <td class="paramname"><em>ptr</em></td><td>)</td>
14219 <td></td>
14220 </tr>
14221 </table>
14222</div><div class="memdoc">
14223
14224<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00111">111</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
14225
14226<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00115">Profiler::AnalyzeEventSequenceAndWriteResults()</a>.</p>
14227<div class="fragment"><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{ <span class="keywordflow">return</span> ptr;}</div></div><!-- fragment -->
14228</div>
14229</div>
14230<a id="a4b1e2158af2aedd3f00d2121c45b0f93"></a>
14231<h2 class="memtitle"><span class="permalink"><a href="#a4b1e2158af2aedd3f00d2121c45b0f93">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[2/2]</span></h2>
14232
14233<div class="memitem">
14234<div class="memproto">
14235 <table class="memname">
14236 <tr>
14237 <td class="memname">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a>* armnn::GetEventPtr </td>
14238 <td>(</td>
14239 <td class="paramtype">const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> &gt; &amp;&#160;</td>
14240 <td class="paramname"><em>ptr</em></td><td>)</td>
14241 <td></td>
14242 </tr>
14243 </table>
14244</div><div class="memdoc">
14245
14246<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00112">112</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
14247<div class="fragment"><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;{<span class="keywordflow">return</span> ptr.get(); }</div></div><!-- fragment -->
14248</div>
14249</div>
14250<a id="a5974a183710829851dbd98a4a919cd50"></a>
14251<h2 class="memtitle"><span class="permalink"><a href="#a5974a183710829851dbd98a4a919cd50">&#9670;&nbsp;</a></span>GetILayerSupportByBackendId()</h2>
14252
14253<div class="memitem">
14254<div class="memproto">
14255 <table class="memname">
14256 <tr>
14257 <td class="memname">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> &gt; GetILayerSupportByBackendId </td>
14258 <td>(</td>
14259 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;&#160;</td>
14260 <td class="paramname"><em>backend</em></td><td>)</td>
14261 <td></td>
14262 </tr>
14263 </table>
14264</div><div class="memdoc">
14265
14266<p>Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> for a backend. </p>
14267
14268<p class="definition">Definition at line <a class="el" href="_backend_helper_8cpp_source.xhtml#l00014">14</a> of file <a class="el" href="_backend_helper_8cpp_source.xhtml">BackendHelper.cpp</a>.</p>
14269
14270<p class="reference">References <a class="el" href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistryInstance()</a>, <a class="el" href="_backend_registry_8cpp_source.xhtml#l00048">BackendRegistry::GetFactory()</a>, and <a class="el" href="_backend_registry_8cpp_source.xhtml#l00043">BackendRegistry::IsBackendRegistered()</a>.</p>
14271<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BackendRegistry&amp; backendRegistry = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a>();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">if</span> (!backendRegistry.IsBackendRegistered(backend))</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">auto</span> factoryFunc = backendRegistry.GetFactory(backend);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">auto</span> backendObject = factoryFunc();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> backendObject-&gt;GetLayerSupport();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistry.cpp:13</a></div></div>
14272</div><!-- fragment -->
14273</div>
14274</div>
14275<a id="af487cc4568faf50403f12ed1c7a70a2d"></a>
14276<h2 class="memtitle"><span class="permalink"><a href="#af487cc4568faf50403f12ed1c7a70a2d">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[1/2]</span></h2>
14277
14278<div class="memitem">
14279<div class="memproto">
14280 <table class="memname">
14281 <tr>
14282 <td class="memname">const float* armnn::GetInputTensorData </td>
14283 <td>(</td>
14284 <td class="paramtype">unsigned int&#160;</td>
14285 <td class="paramname"><em>idx</em>, </td>
14286 </tr>
14287 <tr>
14288 <td class="paramkey"></td>
14289 <td></td>
14290 <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;&#160;</td>
14291 <td class="paramname"><em>data</em>&#160;</td>
14292 </tr>
14293 <tr>
14294 <td></td>
14295 <td>)</td>
14296 <td></td><td></td>
14297 </tr>
14298 </table>
14299</div><div class="memdoc">
14300
14301<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml">SampleDynamicAdditionWorkload.cpp</a>.</p>
14302
14303<p class="reference">References <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14304<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
14305</div>
14306</div>
14307<a id="a2187ea15b1ae8c323a0cc5c211fc43d9"></a>
14308<h2 class="memtitle"><span class="permalink"><a href="#a2187ea15b1ae8c323a0cc5c211fc43d9">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[2/2]</span></h2>
14309
14310<div class="memitem">
14311<div class="memproto">
14312 <table class="memname">
14313 <tr>
14314 <td class="memname">const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetInputTensorData </td>
14315 <td>(</td>
14316 <td class="paramtype">unsigned int&#160;</td>
14317 <td class="paramname"><em>idx</em>, </td>
14318 </tr>
14319 <tr>
14320 <td class="paramkey"></td>
14321 <td></td>
14322 <td class="paramtype">const PayloadType &amp;&#160;</td>
14323 <td class="paramname"><em>data</em>&#160;</td>
14324 </tr>
14325 <tr>
14326 <td></td>
14327 <td>)</td>
14328 <td></td><td></td>
14329 </tr>
14330 </table>
14331</div><div class="memdoc">
14332
14333<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00034">34</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14334
14335<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14336
14337<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
14338<div class="fragment"><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; <span class="keyword">const</span> ITensorHandle* tensorHandle = data.m_Inputs[idx];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
14339</div><!-- fragment -->
14340</div>
14341</div>
14342<a id="a691846a9eee59b0cd5b22fb5f674e007"></a>
14343<h2 class="memtitle"><span class="permalink"><a href="#a691846a9eee59b0cd5b22fb5f674e007">&#9670;&nbsp;</a></span>GetInputTensorDataFloat()</h2>
14344
14345<div class="memitem">
14346<div class="memproto">
14347 <table class="memname">
14348 <tr>
14349 <td class="memname">const float* armnn::GetInputTensorDataFloat </td>
14350 <td>(</td>
14351 <td class="paramtype">unsigned int&#160;</td>
14352 <td class="paramname"><em>idx</em>, </td>
14353 </tr>
14354 <tr>
14355 <td class="paramkey"></td>
14356 <td></td>
14357 <td class="paramtype">const PayloadType &amp;&#160;</td>
14358 <td class="paramname"><em>data</em>&#160;</td>
14359 </tr>
14360 <tr>
14361 <td></td>
14362 <td>)</td>
14363 <td></td><td></td>
14364 </tr>
14365 </table>
14366</div><div class="memdoc">
14367
14368<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00048">48</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14369
14370<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
14371<div class="fragment"><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="keywordflow">return</span> GetInputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
14372</div>
14373</div>
14374<a id="a084b0ce273bef78aa314bd97fc574b84"></a>
14375<h2 class="memtitle"><span class="permalink"><a href="#a084b0ce273bef78aa314bd97fc574b84">&#9670;&nbsp;</a></span>GetInputTensorDataHalf()</h2>
14376
14377<div class="memitem">
14378<div class="memproto">
14379 <table class="memname">
14380 <tr>
14381 <td class="memname">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetInputTensorDataHalf </td>
14382 <td>(</td>
14383 <td class="paramtype">unsigned int&#160;</td>
14384 <td class="paramname"><em>idx</em>, </td>
14385 </tr>
14386 <tr>
14387 <td class="paramkey"></td>
14388 <td></td>
14389 <td class="paramtype">const PayloadType &amp;&#160;</td>
14390 <td class="paramname"><em>data</em>&#160;</td>
14391 </tr>
14392 <tr>
14393 <td></td>
14394 <td>)</td>
14395 <td></td><td></td>
14396 </tr>
14397 </table>
14398</div><div class="memdoc">
14399
14400<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00060">60</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14401
14402<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00016">RefConvertFp16ToFp32Workload::Execute()</a>.</p>
14403<div class="fragment"><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">return</span> GetInputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div></div><!-- fragment -->
14404</div>
14405</div>
14406<a id="ae52296dff1f4879854f320d59f92574e"></a>
14407<h2 class="memtitle"><span class="permalink"><a href="#ae52296dff1f4879854f320d59f92574e">&#9670;&nbsp;</a></span>GetInputTensorInfo()</h2>
14408
14409<div class="memitem">
14410<div class="memproto">
14411 <table class="memname">
14412 <tr>
14413 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> armnn::GetInputTensorInfo </td>
14414 <td>(</td>
14415 <td class="paramtype">const <a class="el" href="classarmnn_1_1_network.xhtml">Network</a> *&#160;</td>
14416 <td class="paramname"><em>network</em></td><td>)</td>
14417 <td></td>
14418 </tr>
14419 </table>
14420</div><div class="memdoc">
14421
14422<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00335">335</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
14423
14424<p class="reference">References <a class="el" href="_network_8hpp_source.xhtml#l00034">Network::GetGraph()</a>, and <a class="el" href="_graph_8hpp_source.xhtml#l00181">Graph::GetInputLayers()</a>.</p>
14425
14426<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00345">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00184">BoundedReLuUint8UpperAndLowerBoundTest()</a>, and <a class="el" href="_loaded_network_8hpp_source.xhtml#l00037">LoadedNetwork::~LoadedNetwork()</a>.</p>
14427<div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputLayer : network-&gt;GetGraph().GetInputLayers())</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; BOOST_ASSERT_MSG(inputLayer-&gt;GetNumOutputSlots() == 1, <span class="stringliteral">&quot;Input layer should have exactly 1 output slot&quot;</span>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> inputLayer-&gt;GetOutputSlot(0).GetTensorInfo();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Network has no input layers&quot;</span>);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div></div><!-- fragment -->
14428</div>
14429</div>
14430<a id="a9da573d7a1fc03726fd41f2130cbcf92"></a>
14431<h2 class="memtitle"><span class="permalink"><a href="#a9da573d7a1fc03726fd41f2130cbcf92">&#9670;&nbsp;</a></span>GetLayerTypeAsCString()</h2>
14432
14433<div class="memitem">
14434<div class="memproto">
14435 <table class="memname">
14436 <tr>
14437 <td class="memname">const char * GetLayerTypeAsCString </td>
14438 <td>(</td>
14439 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td>
14440 <td class="paramname"><em>type</em></td><td>)</td>
14441 <td></td>
14442 </tr>
14443 </table>
14444</div><div class="memdoc">
14445
14446<p class="definition">Definition at line <a class="el" href="_internal_types_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_internal_types_8cpp_source.xhtml">InternalTypes.cpp</a>.</p>
14447
14448<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">BatchNormalization</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2">BatchToSpaceNd</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">Comparison</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">Concat</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">Constant</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">ConvertFp16ToFp32</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">ConvertFp32ToFp16</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">Convolution2d</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d">DepthToSpace</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">DepthwiseConvolution2d</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a">DetectionPostProcess</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">Division</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">ElementwiseUnary</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48">FakeQuantization</a>, <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e">FullyConnected</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53">Gather</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">InstanceNormalization</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">L2Normalization</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488">LogSoftmax</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">Lstm</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">Maximum</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d">Mean</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">MemCopy</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">MemImport</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">Merge</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">Minimum</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">Multiplication</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">Normalization</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f">Pad</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001">Pooling2d</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">PreCompiled</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">Prelu</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">QuantizedLstm</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">Reshape</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63">Resize</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb">Slice</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">Softmax</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279">SpaceToBatchNd</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a">SpaceToDepth</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf">Splitter</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca">Stack</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">StandIn</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d">StridedSlice</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">Subtraction</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">Switch</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aaf70b1ac863830a4e1ce6268c8399f54">Transpose</a>, and <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>.</p>
14449
14450<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00114">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00371">Layer::InferOutputShapes()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00493">Graph::InferTensorInfos()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00061">Graph::Print()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00099">ReturnWithError()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00398">Layer::SerializeLayerParameters()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00081">Graph::SerializeToDot()</a>, <a class="el" href="_elementwise_base_layer_8cpp_source.xhtml#l00051">ElementwiseBaseLayer::ValidateTensorShapesFromInputs()</a>, and <a class="el" href="_layer_8cpp_source.xhtml#l00338">Layer::VerifyLayerConnections()</a>.</p>
14451<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keywordflow">switch</span> (type)</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="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">LayerType::Activation</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Activation&quot;</span>;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LayerType::Addition: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Addition&quot;</span>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a374120de442fe42c26536bb4f1e2a5a1">LayerType::ArgMinMax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ArgMinMax&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> LayerType::BatchNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchNormalization&quot;</span>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a8746512fab5ec10c2c57800c66311ba7">LayerType::BatchToSpaceNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;BatchToSpaceNd&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LayerType::Comparison: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Comparison&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">case</span> LayerType::Concat: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Concat&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LayerType::Constant: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Constant&quot;</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp16ToFp32: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp16ToFp32&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LayerType::ConvertFp32ToFp16: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConvertFp32ToFp16&quot;</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">case</span> LayerType::Convolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Convolution2d&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">LayerType::Debug</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">LayerType::DepthToSpace</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthToSpace&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">case</span> LayerType::DepthwiseConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DepthwiseConvolution2d&quot;</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">LayerType::Dequantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Dequantize&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">LayerType::DetectionPostProcess</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;DetectionPostProcess&quot;</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">case</span> LayerType::Division: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Division&quot;</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">case</span> LayerType::ElementwiseUnary: <span class="keywordflow">return</span> <span class="stringliteral">&quot;ElementwiseUnary&quot;</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ab3c0b7e1a78b1b98c24934221f36a7c3">LayerType::FakeQuantization</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FakeQuantization&quot;</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">case</span> LayerType::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad34d1d5b1ca8f52dc296ecf52ba20c8a">LayerType::FullyConnected</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;FullyConnected&quot;</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a66004b2326f8ccb1faa71d5efa186633">LayerType::Gather</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Gather&quot;</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">case</span> LayerType::Input: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Input&quot;</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> LayerType::InstanceNormalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;InstanceNormalization&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> LayerType::L2Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2Normalization&quot;</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ac52e04c0e349e25bcdaa72c27395ef8f">LayerType::LogSoftmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LogSoftmax&quot;</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> LayerType::Lstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Lstm&quot;</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> LayerType::Maximum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Maximum&quot;</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a165ae372a7f67cad64ef3395d30122ce">LayerType::Mean</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Mean&quot;</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> LayerType::MemCopy: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemCopy&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> LayerType::MemImport: <span class="keywordflow">return</span> <span class="stringliteral">&quot;MemImport&quot;</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> LayerType::Merge: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Merge&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> LayerType::Minimum: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Minimum&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> LayerType::Multiplication: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Multiplication&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> LayerType::Normalization: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Normalization&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> LayerType::Output: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Output&quot;</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">LayerType::Pad</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pad&quot;</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">LayerType::Permute</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Permute&quot;</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ae2e93e304cf516841c521e3eaee025cd">LayerType::Pooling2d</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Pooling2d&quot;</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">case</span> LayerType::PreCompiled: <span class="keywordflow">return</span> <span class="stringliteral">&quot;PreCompiled&quot;</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> LayerType::Prelu: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Prelu&quot;</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad773a034fb9983e15f3094b4c5c7c30c">LayerType::Quantize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Quantize&quot;</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> LayerType::QuantizedLstm: <span class="keywordflow">return</span> <span class="stringliteral">&quot;QuantizedLstm&quot;</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">case</span> LayerType::Reshape: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Reshape&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a25dc224be48103343302b5a6fd588fe7">LayerType::Resize</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Resize&quot;</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a044ea0cc993d4d1fbe4ec877b17b8d39">LayerType::Slice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Slice&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#aa999ff2585ad75b95954a9323f63c32b">LayerType::Softmax</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Softmax&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a4a180e425d4c19b2cdea4ce5760180e1">LayerType::SpaceToBatchNd</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToBatchNd&quot;</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a5e1dc69443b64ad16b669388a6023f7a">LayerType::SpaceToDepth</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;SpaceToDepth&quot;</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a427c3d26d05b518b1ace407035f5920e">LayerType::Splitter</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Splitter&quot;</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a6ef2dcac2ec0683d52df1b051404e7d6">LayerType::Stack</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Stack&quot;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">case</span> LayerType::StandIn: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StandIn&quot;</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a86d7a7168ac00b75b4971f9aad623698">LayerType::StridedSlice</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;StridedSlice&quot;</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">case</span> LayerType::Subtraction: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Subtraction&quot;</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">case</span> LayerType::Switch: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Switch&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> LayerType::TransposeConvolution2d: <span class="keywordflow">return</span> <span class="stringliteral">&quot;TransposeConvolution2d&quot;</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn_utils.xhtml#a405d5f966ec992d1717711e5a2d7909d">LayerType::Transpose</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Transpose&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unknown layer type&quot;</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a855293b1be0581fb61ef6a1c5b027d0f"><div class="ttname"><a href="namespacearmnn.xhtml#a855293b1be0581fb61ef6a1c5b027d0f">armnn::Dequantize</a></div><div class="ttdeci">float Dequantize(QuantizedType value, float scale, int32_t offset)</div><div class="ttdoc">Dequantize an 8-bit data type into a floating point data type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.xhtml#l00047">TypesUtils.cpp:47</a></div></div>
14452<div class="ttc" id="namespacearmnn_xhtml_a044ea0cc993d4d1fbe4ec877b17b8d39"><div class="ttname"><a href="namespacearmnn.xhtml#a044ea0cc993d4d1fbe4ec877b17b8d39">armnn::Slice</a></div><div class="ttdeci">void Slice(const TensorInfo &amp;inputInfo, const SliceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_slice_8cpp_source.xhtml#l00016">Slice.cpp:16</a></div></div>
14453<div class="ttc" id="namespacearmnn_xhtml_a374120de442fe42c26536bb4f1e2a5a1"><div class="ttname"><a href="namespacearmnn.xhtml#a374120de442fe42c26536bb4f1e2a5a1">armnn::ArgMinMax</a></div><div class="ttdeci">void ArgMinMax(Decoder&lt; float &gt; &amp;in, int32_t *out, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, ArgMinMaxFunction function, int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_arg_min_max_8cpp_source.xhtml#l00015">ArgMinMax.cpp:15</a></div></div>
14454<div class="ttc" id="namespacearmnn_utils_xhtml_a405d5f966ec992d1717711e5a2d7909d"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a405d5f966ec992d1717711e5a2d7909d">armnnUtils::Transpose</a></div><div class="ttdeci">void Transpose(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="armnn_utils_2_transpose_8cpp_source.xhtml#l00120">Transpose.cpp:120</a></div></div>
14455<div class="ttc" id="namespacearmnn_xhtml_ab023d9a7687e35c0f108458a094c1f56"><div class="ttname"><a href="namespacearmnn.xhtml#ab023d9a7687e35c0f108458a094c1f56">armnn::DepthToSpace</a></div><div class="ttdeci">void DepthToSpace(const TensorInfo &amp;inputInfo, const DepthToSpaceDescriptor &amp;descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_depth_to_space_8cpp_source.xhtml#l00018">DepthToSpace.cpp:18</a></div></div>
14456<div class="ttc" id="namespacearmnn_xhtml_ad34d1d5b1ca8f52dc296ecf52ba20c8a"><div class="ttname"><a href="namespacearmnn.xhtml#ad34d1d5b1ca8f52dc296ecf52ba20c8a">armnn::FullyConnected</a></div><div class="ttdeci">void FullyConnected(const TensorShape &amp;rInputShape, Decoder&lt; float &gt; &amp;rInputDecoder, const TensorShape &amp;rOutputShape, Encoder&lt; float &gt; &amp;rOutputEncoder, Decoder&lt; float &gt; &amp;rWeightDecoder, Decoder&lt; float &gt; &amp;rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)</div><div class="ttdoc">Performs a matrix multiplication and optionally adds a bias. </div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_fully_connected_8cpp_source.xhtml#l00015">FullyConnected.cpp:15</a></div></div>
14457<div class="ttc" id="namespacearmnn_xhtml_ab3c0b7e1a78b1b98c24934221f36a7c3"><div class="ttname"><a href="namespacearmnn.xhtml#ab3c0b7e1a78b1b98c24934221f36a7c3">armnn::FakeQuantization</a></div><div class="ttdeci">void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)</div><div class="ttdef"><b>Definition:</b> <a href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00017">RefFakeQuantizationFloat32Workload.cpp:17</a></div></div>
14458<div class="ttc" id="namespacearmnn_xhtml_a6ef2dcac2ec0683d52df1b051404e7d6"><div class="ttname"><a href="namespacearmnn.xhtml#a6ef2dcac2ec0683d52df1b051404e7d6">armnn::Stack</a></div><div class="ttdeci">void Stack(const StackQueueDescriptor &amp;data, std::vector&lt; std::unique_ptr&lt; Decoder&lt; float &gt;&gt;&gt; &amp;inputs, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_stack_8cpp_source.xhtml#l00012">Stack.cpp:12</a></div></div>
14459<div class="ttc" id="namespacearmnn_xhtml_a28e115f5d28500324b53fae9e6c00b77"><div class="ttname"><a href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a></div><div class="ttdeci">void Pad(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; m_padList, const T *inputData, T *outData, const float padValue)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad.cpp:22</a></div></div>
14460<div class="ttc" id="namespacearmnn_utils_xhtml_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00121">Permute.cpp:121</a></div></div>
14461<div class="ttc" id="namespacearmnn_xhtml_ae76ce23fa9fc18e56448d52b37dd3f32"><div class="ttname"><a href="namespacearmnn.xhtml#ae76ce23fa9fc18e56448d52b37dd3f32">armnn::DetectionPostProcess</a></div><div class="ttdeci">void DetectionPostProcess(const TensorInfo &amp;boxEncodingsInfo, const TensorInfo &amp;scoresInfo, const TensorInfo &amp;anchorsInfo, const TensorInfo &amp;detectionBoxesInfo, const TensorInfo &amp;detectionClassesInfo, const TensorInfo &amp;detectionScoresInfo, const TensorInfo &amp;numDetectionsInfo, const DetectionPostProcessDescriptor &amp;desc, Decoder&lt; float &gt; &amp;boxEncodings, Decoder&lt; float &gt; &amp;scores, Decoder&lt; float &gt; &amp;anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess.cpp:141</a></div></div>
14462<div class="ttc" id="namespacearmnn_xhtml_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.xhtml#l00020">Debug.cpp:20</a></div></div>
14463<div class="ttc" id="namespacearmnn_xhtml_a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><div class="ttname"><a href="namespacearmnn.xhtml#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">armnn::Activation</a></div><div class="ttdeci">float Activation(float in, ActivationFunction function, float a, float b)</div><div class="ttdef"><b>Definition:</b> <a href="_activation_8cpp_source.xhtml#l00013">Activation.cpp:13</a></div></div>
14464<div class="ttc" id="namespacearmnn_xhtml_ad773a034fb9983e15f3094b4c5c7c30c"><div class="ttname"><a href="namespacearmnn.xhtml#ad773a034fb9983e15f3094b4c5c7c30c">armnn::Quantize</a></div><div class="ttdeci">QuantizedType Quantize(float value, float scale, int32_t offset)</div><div class="ttdoc">Quantize a floating point data type into an 8-bit data type. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8cpp_source.xhtml#l00031">TypesUtils.cpp:31</a></div></div>
14465<div class="ttc" id="namespacearmnn_xhtml_a25dc224be48103343302b5a6fd588fe7"><div class="ttname"><a href="namespacearmnn.xhtml#a25dc224be48103343302b5a6fd588fe7">armnn::Resize</a></div><div class="ttdeci">void Resize(Decoder&lt; float &gt; &amp;in, const TensorInfo &amp;inputInfo, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)</div><div class="ttdef"><b>Definition:</b> <a href="_resize_8cpp_source.xhtml#l00035">Resize.cpp:35</a></div></div>
14466<div class="ttc" id="namespacearmnn_xhtml_ac52e04c0e349e25bcdaa72c27395ef8f"><div class="ttname"><a href="namespacearmnn.xhtml#ac52e04c0e349e25bcdaa72c27395ef8f">armnn::LogSoftmax</a></div><div class="ttdeci">void LogSoftmax(Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output, const TensorInfo &amp;inputInfo, const LogSoftmaxDescriptor &amp;descriptor)</div><div class="ttdef"><b>Definition:</b> <a href="_log_softmax_8cpp_source.xhtml#l00030">LogSoftmax.cpp:30</a></div></div>
14467<div class="ttc" id="namespacearmnn_xhtml_a4a180e425d4c19b2cdea4ce5760180e1"><div class="ttname"><a href="namespacearmnn.xhtml#a4a180e425d4c19b2cdea4ce5760180e1">armnn::SpaceToBatchNd</a></div><div class="ttdeci">void SpaceToBatchNd(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToBatchNdDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">SpaceToBatchNd.cpp:34</a></div></div>
14468<div class="ttc" id="namespacearmnn_xhtml_a86d7a7168ac00b75b4971f9aad623698"><div class="ttname"><a href="namespacearmnn.xhtml#a86d7a7168ac00b75b4971f9aad623698">armnn::StridedSlice</a></div><div class="ttdeci">void StridedSlice(const TensorInfo &amp;inputInfo, const StridedSliceDescriptor &amp;params, const void *inputData, void *outputData, unsigned int dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_strided_slice_8cpp_source.xhtml#l00090">StridedSlice.cpp:90</a></div></div>
14469<div class="ttc" id="namespacearmnn_xhtml_a165ae372a7f67cad64ef3395d30122ce"><div class="ttname"><a href="namespacearmnn.xhtml#a165ae372a7f67cad64ef3395d30122ce">armnn::Mean</a></div><div class="ttdeci">void Mean(const armnn::TensorInfo &amp;inputInfo, const armnn::TensorInfo &amp;outputInfo, const std::vector&lt; unsigned int &gt; &amp;axis, Decoder&lt; float &gt; &amp;input, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean.cpp:71</a></div></div>
14470<div class="ttc" id="namespacearmnn_xhtml_a66004b2326f8ccb1faa71d5efa186633"><div class="ttname"><a href="namespacearmnn.xhtml#a66004b2326f8ccb1faa71d5efa186633">armnn::Gather</a></div><div class="ttdeci">void Gather(const TensorInfo &amp;paramsInfo, const TensorInfo &amp;indicesInfo, const TensorInfo &amp;outputInfo, Decoder&lt; float &gt; &amp;params, const int32_t *indices, Encoder&lt; float &gt; &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml#l00018">Gather.cpp:18</a></div></div>
14471<div class="ttc" id="namespacearmnn_xhtml_a5e1dc69443b64ad16b669388a6023f7a"><div class="ttname"><a href="namespacearmnn.xhtml#a5e1dc69443b64ad16b669388a6023f7a">armnn::SpaceToDepth</a></div><div class="ttdeci">void SpaceToDepth(const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const SpaceToDepthDescriptor &amp;params, Decoder&lt; float &gt; &amp;inputData, Encoder&lt; float &gt; &amp;outputData)</div><div class="ttdef"><b>Definition:</b> <a href="_space_to_depth_8cpp_source.xhtml#l00036">SpaceToDepth.cpp:36</a></div></div>
14472<div class="ttc" id="namespacearmnn_xhtml_a8746512fab5ec10c2c57800c66311ba7"><div class="ttname"><a href="namespacearmnn.xhtml#a8746512fab5ec10c2c57800c66311ba7">armnn::BatchToSpaceNd</a></div><div class="ttdeci">void BatchToSpaceNd(const DataLayoutIndexed &amp;dataLayout, const TensorInfo &amp;inputTensorInfo, const TensorInfo &amp;outputTensorInfo, const std::vector&lt; unsigned int &gt; &amp;blockShape, const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;cropsData, Decoder&lt; float &gt; &amp;inputDecoder, Encoder&lt; float &gt; &amp;outputEncoder)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">BatchToSpaceNd.cpp:35</a></div></div>
14473<div class="ttc" id="namespacearmnn_xhtml_ae2e93e304cf516841c521e3eaee025cd"><div class="ttname"><a href="namespacearmnn.xhtml#ae2e93e304cf516841c521e3eaee025cd">armnn::Pooling2d</a></div><div class="ttdeci">void Pooling2d(Decoder&lt; float &gt; &amp;rInputDecoder, Encoder&lt; float &gt; &amp;rOutputEncoder, const TensorInfo &amp;inputInfo, const TensorInfo &amp;outputInfo, const Pooling2dDescriptor &amp;params)</div><div class="ttdoc">Computes the Pooling2d operation. </div><div class="ttdef"><b>Definition:</b> <a href="_pooling2d_8cpp_source.xhtml#l00143">Pooling2d.cpp:143</a></div></div>
14474<div class="ttc" id="namespacearmnn_xhtml_a427c3d26d05b518b1ace407035f5920e"><div class="ttname"><a href="namespacearmnn.xhtml#a427c3d26d05b518b1ace407035f5920e">armnn::Splitter</a></div><div class="ttdeci">void Splitter(const SplitterQueueDescriptor &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="_splitter_8hpp_source.xhtml#l00017">Splitter.hpp:17</a></div></div>
14475<div class="ttc" id="namespacearmnn_xhtml_aa999ff2585ad75b95954a9323f63c32b"><div class="ttname"><a href="namespacearmnn.xhtml#aa999ff2585ad75b95954a9323f63c32b">armnn::Softmax</a></div><div class="ttdeci">void Softmax(Decoder&lt; float &gt; &amp;in, Encoder&lt; float &gt; &amp;out, const TensorInfo &amp;inputTensorInfo, float beta, int axis)</div><div class="ttdoc">Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_softmax_8cpp_source.xhtml#l00017">Softmax.cpp:17</a></div></div>
14476</div><!-- fragment -->
14477</div>
14478</div>
14479<a id="aeadd602e128a2be97161345b48533417"></a>
14480<h2 class="memtitle"><span class="permalink"><a href="#aeadd602e128a2be97161345b48533417">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmChannelAsCString()</h2>
14481
14482<div class="memitem">
14483<div class="memproto">
14484 <table class="memname">
14485 <tr>
14486 <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmChannelAsCString </td>
14487 <td>(</td>
14488 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
14489 <td class="paramname"><em>channel</em></td><td>)</td>
14490 <td></td>
14491 </tr>
14492 </table>
14493</div><div class="memdoc">
14494
14495<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00200">200</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14496
14497<p class="reference">References <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
14498
14499<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
14500<div class="fragment"><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="keywordflow">switch</span> (channel)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Across: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Across&quot;</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmChannel::Within: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Within&quot;</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div></div><!-- fragment -->
14501</div>
14502</div>
14503<a id="ad57460ea53cd0b519a3b3547eaf1db7c"></a>
14504<h2 class="memtitle"><span class="permalink"><a href="#ad57460ea53cd0b519a3b3547eaf1db7c">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmMethodAsCString()</h2>
14505
14506<div class="memitem">
14507<div class="memproto">
14508 <table class="memname">
14509 <tr>
14510 <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmMethodAsCString </td>
14511 <td>(</td>
14512 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a>&#160;</td>
14513 <td class="paramname"><em>method</em></td><td>)</td>
14514 <td></td>
14515 </tr>
14516 </table>
14517</div><div class="memdoc">
14518
14519<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00210">210</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14520
14521<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a>, and <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a>.</p>
14522
14523<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
14524<div class="fragment"><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; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalBrightness: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalBrightness&quot;</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">case</span> NormalizationAlgorithmMethod::LocalContrast: <span class="keywordflow">return</span> <span class="stringliteral">&quot;LocalContrast&quot;</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;}</div></div><!-- fragment -->
14525</div>
14526</div>
14527<a id="adafb0fd0a3f6435c2bdf41f971761ecf"></a>
14528<h2 class="memtitle"><span class="permalink"><a href="#adafb0fd0a3f6435c2bdf41f971761ecf">&#9670;&nbsp;</a></span>GetOffset()</h2>
14529
14530<div class="memitem">
14531<div class="memproto">
14532 <table class="memname">
14533 <tr>
14534 <td class="memname">unsigned int armnn::GetOffset </td>
14535 <td>(</td>
14536 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
14537 <td class="paramname"><em>shape</em>, </td>
14538 </tr>
14539 <tr>
14540 <td class="paramkey"></td>
14541 <td></td>
14542 <td class="paramtype">unsigned int&#160;</td>
14543 <td class="paramname"><em>b</em>, </td>
14544 </tr>
14545 <tr>
14546 <td class="paramkey"></td>
14547 <td></td>
14548 <td class="paramtype">unsigned int&#160;</td>
14549 <td class="paramname"><em>h</em>, </td>
14550 </tr>
14551 <tr>
14552 <td class="paramkey"></td>
14553 <td></td>
14554 <td class="paramtype">unsigned int&#160;</td>
14555 <td class="paramname"><em>w</em>, </td>
14556 </tr>
14557 <tr>
14558 <td class="paramkey"></td>
14559 <td></td>
14560 <td class="paramtype">unsigned int&#160;</td>
14561 <td class="paramname"><em>c</em>, </td>
14562 </tr>
14563 <tr>
14564 <td class="paramkey"></td>
14565 <td></td>
14566 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
14567 <td class="paramname"><em>dataLayout</em>&#160;</td>
14568 </tr>
14569 <tr>
14570 <td></td>
14571 <td>)</td>
14572 <td></td><td></td>
14573 </tr>
14574 </table>
14575</div><div class="memdoc">
14576
14577<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml">SpaceToBatchNd.cpp</a>.</p>
14578
14579<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
14580
14581<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_depth_8cpp_source.xhtml#l00036">SpaceToDepth()</a>.</p>
14582<div class="fragment"><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="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> ((b * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + c) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + h) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + w;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
14583<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
14584<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00022">DataLayoutIndexed.hpp:22</a></div></div>
14585<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
14586</div><!-- fragment -->
14587</div>
14588</div>
14589<a id="a67d7ce2e14ebd328f423322db88279c3"></a>
14590<h2 class="memtitle"><span class="permalink"><a href="#a67d7ce2e14ebd328f423322db88279c3">&#9670;&nbsp;</a></span>GetOutputShapeRoundingAsCString()</h2>
14591
14592<div class="memitem">
14593<div class="memproto">
14594 <table class="memname">
14595 <tr>
14596 <td class="memname">constexpr char const* armnn::GetOutputShapeRoundingAsCString </td>
14597 <td>(</td>
14598 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
14599 <td class="paramname"><em>rounding</em></td><td>)</td>
14600 <td></td>
14601 </tr>
14602 </table>
14603</div><div class="memdoc">
14604
14605<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00095">95</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14606
14607<p class="reference">References <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
14608
14609<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
14610<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">switch</span> (rounding)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Ceiling: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Ceiling&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">case</span> OutputShapeRounding::Floor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Floor&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div></div><!-- fragment -->
14611</div>
14612</div>
14613<a id="a932b4856d89c58865e1f39ec5ab6b841"></a>
14614<h2 class="memtitle"><span class="permalink"><a href="#a932b4856d89c58865e1f39ec5ab6b841">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[1/2]</span></h2>
14615
14616<div class="memitem">
14617<div class="memproto">
14618 <table class="memname">
14619 <tr>
14620 <td class="memname">float* armnn::GetOutputTensorData </td>
14621 <td>(</td>
14622 <td class="paramtype">unsigned int&#160;</td>
14623 <td class="paramname"><em>idx</em>, </td>
14624 </tr>
14625 <tr>
14626 <td class="paramkey"></td>
14627 <td></td>
14628 <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;&#160;</td>
14629 <td class="paramname"><em>data</em>&#160;</td>
14630 </tr>
14631 <tr>
14632 <td></td>
14633 <td>)</td>
14634 <td></td><td></td>
14635 </tr>
14636 </table>
14637</div><div class="memdoc">
14638
14639<p class="definition">Definition at line <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml">SampleDynamicAdditionWorkload.cpp</a>.</p>
14640
14641<p class="reference">References <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14642<div class="fragment"><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; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
14643</div>
14644</div>
14645<a id="a2c0b2e5bd1b03aec10473a201f57f859"></a>
14646<h2 class="memtitle"><span class="permalink"><a href="#a2c0b2e5bd1b03aec10473a201f57f859">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[2/2]</span></h2>
14647
14648<div class="memitem">
14649<div class="memproto">
14650 <table class="memname">
14651 <tr>
14652 <td class="memname"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetOutputTensorData </td>
14653 <td>(</td>
14654 <td class="paramtype">unsigned int&#160;</td>
14655 <td class="paramname"><em>idx</em>, </td>
14656 </tr>
14657 <tr>
14658 <td class="paramkey"></td>
14659 <td></td>
14660 <td class="paramtype">const PayloadType &amp;&#160;</td>
14661 <td class="paramname"><em>data</em>&#160;</td>
14662 </tr>
14663 <tr>
14664 <td></td>
14665 <td>)</td>
14666 <td></td><td></td>
14667 </tr>
14668 </table>
14669</div><div class="memdoc">
14670
14671<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00041">41</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14672
14673<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
14674
14675<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
14676<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; ITensorHandle* tensorHandle = data.m_Outputs[idx];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(tensorHandle-&gt;Map());</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
14677</div><!-- fragment -->
14678</div>
14679</div>
14680<a id="ab5f0afc1e37fd100843ecd55d8f284c1"></a>
14681<h2 class="memtitle"><span class="permalink"><a href="#ab5f0afc1e37fd100843ecd55d8f284c1">&#9670;&nbsp;</a></span>GetOutputTensorDataFloat()</h2>
14682
14683<div class="memitem">
14684<div class="memproto">
14685 <table class="memname">
14686 <tr>
14687 <td class="memname">float* armnn::GetOutputTensorDataFloat </td>
14688 <td>(</td>
14689 <td class="paramtype">unsigned int&#160;</td>
14690 <td class="paramname"><em>idx</em>, </td>
14691 </tr>
14692 <tr>
14693 <td class="paramkey"></td>
14694 <td></td>
14695 <td class="paramtype">const PayloadType &amp;&#160;</td>
14696 <td class="paramname"><em>data</em>&#160;</td>
14697 </tr>
14698 <tr>
14699 <td></td>
14700 <td>)</td>
14701 <td></td><td></td>
14702 </tr>
14703 </table>
14704</div><div class="memdoc">
14705
14706<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00054">54</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14707
14708<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, and <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>.</p>
14709<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> GetOutputTensorData&lt;float&gt;(idx, data);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
14710</div>
14711</div>
14712<a id="ab98e77207c3d676b0b9ffa67357dbc6a"></a>
14713<h2 class="memtitle"><span class="permalink"><a href="#ab98e77207c3d676b0b9ffa67357dbc6a">&#9670;&nbsp;</a></span>GetOutputTensorDataHalf()</h2>
14714
14715<div class="memitem">
14716<div class="memproto">
14717 <table class="memname">
14718 <tr>
14719 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetOutputTensorDataHalf </td>
14720 <td>(</td>
14721 <td class="paramtype">unsigned int&#160;</td>
14722 <td class="paramname"><em>idx</em>, </td>
14723 </tr>
14724 <tr>
14725 <td class="paramkey"></td>
14726 <td></td>
14727 <td class="paramtype">const PayloadType &amp;&#160;</td>
14728 <td class="paramname"><em>data</em>&#160;</td>
14729 </tr>
14730 <tr>
14731 <td></td>
14732 <td>)</td>
14733 <td></td><td></td>
14734 </tr>
14735 </table>
14736</div><div class="memdoc">
14737
14738<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00066">66</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14739
14740<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00017">RefConvertFp32ToFp16Workload::Execute()</a>.</p>
14741<div class="fragment"><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; <span class="keywordflow">return</span> GetOutputTensorData&lt;Half&gt;(idx, data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div></div><!-- fragment -->
14742</div>
14743</div>
14744<a id="a129bde68152f5892e6abdedcb62aa983"></a>
14745<h2 class="memtitle"><span class="permalink"><a href="#a129bde68152f5892e6abdedcb62aa983">&#9670;&nbsp;</a></span>GetPaddingMethodAsCString()</h2>
14746
14747<div class="memitem">
14748<div class="memproto">
14749 <table class="memname">
14750 <tr>
14751 <td class="memname">constexpr char const* armnn::GetPaddingMethodAsCString </td>
14752 <td>(</td>
14753 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a>&#160;</td>
14754 <td class="paramname"><em>method</em></td><td>)</td>
14755 <td></td>
14756 </tr>
14757 </table>
14758</div><div class="memdoc">
14759
14760<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00105">105</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14761
14762<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a>, and <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a>.</p>
14763
14764<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
14765<div class="fragment"><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">switch</span> (method)</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; <span class="keywordflow">case</span> PaddingMethod::Exclude: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exclude&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">case</span> PaddingMethod::IgnoreValue: <span class="keywordflow">return</span> <span class="stringliteral">&quot;IgnoreValue&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div></div><!-- fragment -->
14766</div>
14767</div>
14768<a id="a517314c21ac5309b90408da162212f9d"></a>
14769<h2 class="memtitle"><span class="permalink"><a href="#a517314c21ac5309b90408da162212f9d">&#9670;&nbsp;</a></span>GetPoolingAlgorithmAsCString()</h2>
14770
14771<div class="memitem">
14772<div class="memproto">
14773 <table class="memname">
14774 <tr>
14775 <td class="memname">constexpr char const* armnn::GetPoolingAlgorithmAsCString </td>
14776 <td>(</td>
14777 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
14778 <td class="paramname"><em>pooling</em></td><td>)</td>
14779 <td></td>
14780 </tr>
14781 </table>
14782</div><div class="memdoc">
14783
14784<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00084">84</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14785
14786<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a>, <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a>, and <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233">Max</a>.</p>
14787
14788<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
14789<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">switch</span> (pooling)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Average: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Average&quot;</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::Max: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Max&quot;</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">case</span> PoolingAlgorithm::L2: <span class="keywordflow">return</span> <span class="stringliteral">&quot;L2&quot;</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div></div><!-- fragment -->
14790</div>
14791</div>
14792<a id="a49a398090bc1044038300ce246821a1f"></a>
14793<h2 class="memtitle"><span class="permalink"><a href="#a49a398090bc1044038300ce246821a1f">&#9670;&nbsp;</a></span>GetProfilerEventSequenceSize()</h2>
14794
14795<div class="memitem">
14796<div class="memproto">
14797 <table class="memname">
14798 <tr>
14799 <td class="memname">size_t armnn::GetProfilerEventSequenceSize </td>
14800 <td>(</td>
14801 <td class="paramtype"><a class="el" href="classarmnn_1_1_profiler.xhtml">armnn::Profiler</a> *&#160;</td>
14802 <td class="paramname"><em>profiler</em></td><td>)</td>
14803 <td></td>
14804 </tr>
14805 </table>
14806</div><div class="memdoc">
14807
14808<p class="definition">Definition at line <a class="el" href="_profiler_tests_8cpp_source.xhtml#l00023">23</a> of file <a class="el" href="_profiler_tests_8cpp_source.xhtml">ProfilerTests.cpp</a>.</p>
14809
14810<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>, <a class="el" href="_profiling_8cpp_source.xhtml#l00487">ProfilerManager::GetInstance()</a>, <a class="el" href="_profiling_8cpp_source.xhtml#l00499">ProfilerManager::GetProfiler()</a>, and <a class="el" href="_profiling_8cpp_source.xhtml#l00494">ProfilerManager::RegisterProfiler()</a>.</p>
14811
14812<p class="reference">Referenced by <a class="el" href="_profiler_tests_8cpp_source.xhtml#l00110">BOOST_AUTO_TEST_CASE()</a>.</p>
14813<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (!profiler)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(-1);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</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; <span class="keywordflow">return</span> profiler-&gt;m_EventSequence.size();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
14814</div>
14815</div>
14816<a id="aded981a42027bd3302b9c0f09d988659"></a>
14817<h2 class="memtitle"><span class="permalink"><a href="#aded981a42027bd3302b9c0f09d988659">&#9670;&nbsp;</a></span>GetResizeMethodAsCString()</h2>
14818
14819<div class="memitem">
14820<div class="memproto">
14821 <table class="memname">
14822 <tr>
14823 <td class="memname">constexpr const char* armnn::GetResizeMethodAsCString </td>
14824 <td>(</td>
14825 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
14826 <td class="paramname"><em>method</em></td><td>)</td>
14827 <td></td>
14828 </tr>
14829 </table>
14830</div><div class="memdoc">
14831
14832<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00220">220</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14833
14834<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
14835
14836<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>.</p>
14837<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">switch</span> (method)</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; <span class="keywordflow">case</span> ResizeMethod::Bilinear: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Bilinear&quot;</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">case</span> ResizeMethod::NearestNeighbor: <span class="keywordflow">return</span> <span class="stringliteral">&quot;NearestNeighbour&quot;</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div></div><!-- fragment -->
14838</div>
14839</div>
14840<a id="a19a90c41ca2f46ab29918fef1a6ad72e"></a>
14841<h2 class="memtitle"><span class="permalink"><a href="#a19a90c41ca2f46ab29918fef1a6ad72e">&#9670;&nbsp;</a></span>GetStatusAsCString()</h2>
14842
14843<div class="memitem">
14844<div class="memproto">
14845 <table class="memname">
14846 <tr>
14847 <td class="memname">constexpr char const* armnn::GetStatusAsCString </td>
14848 <td>(</td>
14849 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
14850 <td class="paramname"><em>status</em></td><td>)</td>
14851 <td></td>
14852 </tr>
14853 </table>
14854</div><div class="memdoc">
14855
14856<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00017">17</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14857
14858<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a>, and <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a>.</p>
14859
14860<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.xhtml#l00256">operator&lt;&lt;()</a>.</p>
14861<div class="fragment"><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="keywordflow">switch</span> (status)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Success&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Status::Failure&quot;</span>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">armnn::Status::Success</a></div></div>
14862<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
14863</div><!-- fragment -->
14864</div>
14865</div>
14866<a id="a93d269806f34407695dc10f510001c30"></a>
14867<h2 class="memtitle"><span class="permalink"><a href="#a93d269806f34407695dc10f510001c30">&#9670;&nbsp;</a></span>GetTensorInfo()</h2>
14868
14869<div class="memitem">
14870<div class="memproto">
14871<table class="mlabels">
14872 <tr>
14873 <td class="mlabels-left">
14874 <table class="memname">
14875 <tr>
14876 <td class="memname">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp; GetTensorInfo </td>
14877 <td>(</td>
14878 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
14879 <td class="paramname"><em>tensorHandle</em></td><td>)</td>
14880 <td></td>
14881 </tr>
14882 </table>
14883 </td>
14884 <td class="mlabels-right">
14885<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14886 </tr>
14887</table>
14888</div><div class="memdoc">
14889
14890<p>float32 helpers </p>
14891
14892<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">25</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
14893
14894<p class="reference">References <a class="el" href="_ref_tensor_handle_8hpp_source.xhtml#l00050">RefTensorHandle::GetTensorInfo()</a>.</p>
14895
14896<p class="reference">Referenced by <a class="el" href="_batch_norm_impl_8cpp_source.xhtml#l00018">BatchNormImpl()</a>, <a class="el" href="_concatenate_8cpp_source.xhtml#l00014">Concatenate()</a>, <a class="el" href="_ref_depth_to_space_workload_8cpp_source.xhtml#l00014">RefDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.xhtml#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00017">RefConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_ref_log_softmax_workload_8cpp_source.xhtml#l00020">RefLogSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_activation_workload_8cpp_source.xhtml#l00018">RefActivationWorkload::Execute()</a>, <a class="el" href="_ref_reshape_workload_8cpp_source.xhtml#l00015">RefReshapeWorkload::Execute()</a>, <a class="el" href="_ref_resize_bilinear_workload_8cpp_source.xhtml#l00020">RefResizeBilinearWorkload::Execute()</a>, <a class="el" href="_ref_resize_workload_8cpp_source.xhtml#l00020">RefResizeWorkload::Execute()</a>, <a class="el" href="_ref_softmax_workload_8cpp_source.xhtml#l00020">RefSoftmaxWorkload::Execute()</a>, <a class="el" href="_ref_space_to_batch_nd_workload_8cpp_source.xhtml#l00015">RefSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00016">RefConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00029">RefFakeQuantizationFloat32Workload::Execute()</a>, <a class="el" href="_ref_space_to_depth_workload_8cpp_source.xhtml#l00015">RefSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00039">SampleDynamicAdditionWorkload::Execute()</a>, <a class="el" href="_ref_floor_workload_8cpp_source.xhtml#l00016">RefFloorWorkload::Execute()</a>, <a class="el" href="_ref_slice_workload_8cpp_source.xhtml#l00016">RefSliceWorkload::Execute()</a>, <a class="el" href="_ref_arg_min_max_workload_8cpp_source.xhtml#l00021">RefArgMinMaxWorkload::Execute()</a>, <a class="el" href="_ref_prelu_workload_8cpp_source.xhtml#l00021">RefPreluWorkload::Execute()</a>, <a class="el" href="_ref_batch_normalization_workload_8cpp_source.xhtml#l00025">RefBatchNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_dequantize_workload_8cpp_source.xhtml#l00015">RefDequantizeWorkload::Execute()</a>, <a class="el" href="_ref_batch_to_space_nd_workload_8cpp_source.xhtml#l00014">RefBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_ref_detection_post_process_workload_8cpp_source.xhtml#l00021">RefDetectionPostProcessWorkload::Execute()</a>, <a class="el" href="_ref_stack_workload_8cpp_source.xhtml#l00021">RefStackWorkload::Execute()</a>, <a class="el" href="_ref_instance_normalization_workload_8cpp_source.xhtml#l00021">RefInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_l2_normalization_workload_8cpp_source.xhtml#l00028">RefL2NormalizationWorkload::Execute()</a>, <a class="el" href="_ref_normalization_workload_8cpp_source.xhtml#l00165">RefNormalizationWorkload::Execute()</a>, <a class="el" href="_ref_lstm_workload_8cpp_source.xhtml#l00041">RefLstmWorkload::Execute()</a>, <a class="el" href="_ref_mean_workload_8cpp_source.xhtml#l00021">RefMeanWorkload::Execute()</a>, <a class="el" href="_ref_pooling2d_workload_8cpp_source.xhtml#l00016">RefPooling2dWorkload::Execute()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.xhtml#l00041">RefElementwiseUnaryWorkload::Execute()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.xhtml#l00039">RefComparisonWorkload::Execute()</a>, <a class="el" href="_ref_gather_workload_8cpp_source.xhtml#l00016">RefGatherWorkload::Execute()</a>, <a class="el" href="_ref_permute_workload_8cpp_source.xhtml#l00017">RefPermuteWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_transpose_workload_8cpp_source.xhtml#l00017">RefTransposeWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.xhtml#l00041">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::Execute()</a>, <a class="el" href="_ref_pad_workload_8cpp_source.xhtml#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_ref_debug_workload_8cpp_source.xhtml#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00138">OutputSlot::GetNumConnections()</a>, <a class="el" href="_instance_norm_8cpp_source.xhtml#l00018">InstanceNorm()</a>, <a class="el" href="_ref_quantize_workload_8cpp_source.xhtml#l00037">RefQuantizeWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_depthwise_convolution2d_workload_8cpp_source.xhtml#l00035">RefDepthwiseConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_convolution2d_workload_8cpp_source.xhtml#l00033">RefConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.xhtml#l00031">RefElementwiseUnaryWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_comparison_workload_8cpp_source.xhtml#l00027">RefComparisonWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_constant_workload_8cpp_source.xhtml#l00023">RefConstantWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.xhtml#l00036">RefTransposeConvolution2dWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_fully_connected_workload_8cpp_source.xhtml#l00032">RefFullyConnectedWorkload::PostAllocationConfigure()</a>, <a class="el" href="_ref_elementwise_workload_8cpp_source.xhtml#l00029">RefElementwiseWorkload&lt; Functor, ParentDescriptor, DebugString &gt;::PostAllocationConfigure()</a>, <a class="el" href="_prelu_impl_8cpp_source.xhtml#l00013">PreluImpl()</a>, <a class="el" href="_splitter_8cpp_source.xhtml#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.xhtml#l00017">Splitter()</a>, <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.xhtml#l00012">Stack()</a>, and <a class="el" href="_concat_layer_8cpp_source.xhtml#l00244">ConcatLayer::ValidateTensorShapesFromInputs()</a>.</p>
14897<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// We know that reference workloads use RefTensorHandles for inputs and outputs</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> RefTensorHandle* refTensorHandle =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; boost::polymorphic_downcast&lt;const RefTensorHandle*&gt;(tensorHandle);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> refTensorHandle-&gt;GetTensorInfo();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
14898</div>
14899</div>
14900<a id="a6dac966f265381903c8ef4f392becced"></a>
14901<h2 class="memtitle"><span class="permalink"><a href="#a6dac966f265381903c8ef4f392becced">&#9670;&nbsp;</a></span>GetUnaryOperationAsCString()</h2>
14902
14903<div class="memitem">
14904<div class="memproto">
14905 <table class="memname">
14906 <tr>
14907 <td class="memname">constexpr char const* armnn::GetUnaryOperationAsCString </td>
14908 <td>(</td>
14909 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a>&#160;</td>
14910 <td class="paramname"><em>operation</em></td><td>)</td>
14911 <td></td>
14912 </tr>
14913 </table>
14914</div><div class="memdoc">
14915
14916<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00071">71</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
14917
14918<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a>, <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a>, <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a>, <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>, and <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a>.</p>
14919
14920<p class="reference">Referenced by <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.xhtml#l00041">RefElementwiseUnaryWorkload::Execute()</a>.</p>
14921<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">switch</span> (operation)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Abs: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Abs&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Exp: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Exp&quot;</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Sqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Sqrt&quot;</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Rsqrt: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Rsqrt&quot;</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> UnaryOperation::Neg: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Neg&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="stringliteral">&quot;Unknown&quot;</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div></div><!-- fragment -->
14922</div>
14923</div>
14924<a id="a36e8f52330a21eeab3cc7c4e030f3583"></a>
14925<h2 class="memtitle"><span class="permalink"><a href="#a36e8f52330a21eeab3cc7c4e030f3583">&#9670;&nbsp;</a></span>GetUnpaddedTensorStrides()</h2>
14926
14927<div class="memitem">
14928<div class="memproto">
14929 <table class="memname">
14930 <tr>
14931 <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> GetUnpaddedTensorStrides </td>
14932 <td>(</td>
14933 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
14934 <td class="paramname"><em>tensorInfo</em></td><td>)</td>
14935 <td></td>
14936 </tr>
14937 </table>
14938</div><div class="memdoc">
14939
14940<p class="definition">Definition at line <a class="el" href="_cpu_tensor_handle_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_cpu_tensor_handle_8cpp_source.xhtml">CpuTensorHandle.cpp</a>.</p>
14941
14942<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00115">GetDataTypeSize()</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>.</p>
14943
14944<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_8hpp_source.xhtml#l00040">RefTensorHandle::GetStrides()</a>, <a class="el" href="_sample_tensor_handle_8hpp_source.xhtml#l00041">SampleTensorHandle::GetStrides()</a>, and <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00049">ConstCpuTensorHandle::GetStrides()</a>.</p>
14945<div class="fragment"><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; TensorShape shape(tensorInfo.GetShape());</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">auto</span> size = <a class="code" href="namespacearmnn.xhtml#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType());</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">auto</span> runningSize = size;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; std::vector&lt;unsigned int&gt; strides(shape.GetNumDimensions());</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">auto</span> lastIdx = shape.GetNumDimensions()-1;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i &lt; lastIdx ; i++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; strides[lastIdx-i] = runningSize;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; runningSize *= shape[lastIdx-i];</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; strides[0] = runningSize;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> TensorShape(shape.GetNumDimensions(), strides.data());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.xhtml#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00115">TypesUtils.hpp:115</a></div></div>
14946</div><!-- fragment -->
14947</div>
14948</div>
14949<a id="a44affeeb090c3c6a3062830562672e84"></a>
14950<h2 class="memtitle"><span class="permalink"><a href="#a44affeeb090c3c6a3062830562672e84">&#9670;&nbsp;</a></span>IgnoreUnused()</h2>
14951
14952<div class="memitem">
14953<div class="memproto">
14954<table class="mlabels">
14955 <tr>
14956 <td class="mlabels-left">
14957 <table class="memname">
14958 <tr>
14959 <td class="memname">void armnn::IgnoreUnused </td>
14960 <td>(</td>
14961 <td class="paramtype">Ts &amp;&amp;&#160;</td>
14962 <td class="paramname"><em>...</em></td><td>)</td>
14963 <td></td>
14964 </tr>
14965 </table>
14966 </td>
14967 <td class="mlabels-right">
14968<span class="mlabels"><span class="mlabel">inline</span></span> </td>
14969 </tr>
14970</table>
14971</div><div class="memdoc">
14972
14973<p class="definition">Definition at line <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_ignore_unused_8hpp_source.xhtml">IgnoreUnused.hpp</a>.</p>
14974
14975<p class="reference">Referenced by <a class="el" href="_convert_fp32_to_fp16_layer_8cpp_source.xhtml#l00046">ConvertFp32ToFp16Layer::Accept()</a>, <a class="el" href="_fake_quantization_layer_8cpp_source.xhtml#l00046">FakeQuantizationLayer::Accept()</a>, <a class="el" href="_mem_copy_layer_8cpp_source.xhtml#l00050">MemCopyLayer::Accept()</a>, <a class="el" href="_mem_import_layer_8cpp_source.xhtml#l00050">MemImportLayer::Accept()</a>, <a class="el" href="_debug_layer_8cpp_source.xhtml#l00052">DebugLayer::Accept()</a>, <a class="el" href="_convert_fp16_to_fp32_layer_8cpp_source.xhtml#l00047">ConvertFp16ToFp32Layer::Accept()</a>, <a class="el" href="_pre_compiled_layer_8cpp_source.xhtml#l00049">PreCompiledLayer::Accept()</a>, <a class="el" href="_inference_test_8hpp_source.xhtml#l00095">IInferenceTestCaseProvider::AddCommandLineOptions()</a>, <a class="el" href="_addition_test_impl_8cpp_source.xhtml#l00454">AdditionAfterMaxPoolTest()</a>, <a class="el" href="_addition_test_impl_8cpp_source.xhtml#l00245">AdditionBroadcast1ElementTestImpl()</a>, <a class="el" href="_addition_test_impl_8cpp_source.xhtml#l00162">AdditionBroadcastTestImpl()</a>, <a class="el" href="_arg_min_max_8cpp_source.xhtml#l00015">ArgMinMax()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00685">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="armnn_tf_parser_2test_2_split_8cpp_source.xhtml#l00164">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00023">BoundedReLuTestCommon()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00184">BoundedReLuUint8UpperAndLowerBoundTest()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l02138">armnnTfParser::CalculatePaddedOutputTensorInfo()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00628">CalculateSlotOptionForOutput()</a>, <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.xhtml#l00153">ParserFlatbuffersSerializeFixture::CheckTensors()</a>, <a class="el" href="_inference_test_8inl_source.xhtml#l00033">ClassifierTestCase&lt; TTestCaseDatabase, TModel &gt;::ClassifierTestCase()</a>, <a class="el" href="_cl_context_control_8cpp_source.xhtml#l00031">ClContextControl::ClContextControl()</a>, <a class="el" href="_space_to_depth_layer_8cpp_source.xhtml#l00036">SpaceToDepthLayer::Clone()</a>, <a class="el" href="_space_to_batch_nd_layer_8cpp_source.xhtml#l00036">SpaceToBatchNdLayer::Clone()</a>, <a class="el" href="_file_only_profiling_connection_8cpp_source.xhtml#l00032">FileOnlyProfilingConnection::Close()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l01142">CompareActivationTestImpl()</a>, <a class="el" href="_addition_test_impl_8cpp_source.xhtml#l00561">CompareAdditionTest()</a>, <a class="el" href="_batch_normalization_test_impl_8cpp_source.xhtml#l00587">CompareBatchNormTest()</a>, <a class="el" href="_multiplication_test_impl_8cpp_source.xhtml#l00399">CompareMultiplicationTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l01916">ConcatDifferentInputOutputQParamTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l02072">ConcatTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l02635">ConcatUint16Test()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l02352">ConcatUint8DifferentQParamsTest()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l02497">ConcatUint8Test()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00307">ConstantLinearActivationTestCommon()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l00933">armnnTfParser::ConvertTfTensorDataType()</a>, <a class="el" href="_workload_utils_8hpp_source.xhtml#l00049">CopyTensorContentsGeneric()</a>, <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00131">ClWorkloadFactory::CreateAbs()</a>, <a class="el" href="_neon_workload_factory_8cpp_source.xhtml#l00098">NeonWorkloadFactory::CreateAbs()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00124">RefWorkloadFactory::CreateAbs()</a>, <a class="el" href="_mock_backend_8cpp_source.xhtml#l00108">MockBackend::CreateBackendProfilingContext()</a>, <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00279">ClWorkloadFactory::CreateEqual()</a>, <a class="el" href="_neon_workload_factory_8cpp_source.xhtml#l00245">NeonWorkloadFactory::CreateEqual()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00276">RefWorkloadFactory::CreateEqual()</a>, <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00308">ClWorkloadFactory::CreateGreater()</a>, <a class="el" href="_neon_workload_factory_8cpp_source.xhtml#l00275">NeonWorkloadFactory::CreateGreater()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00312">RefWorkloadFactory::CreateGreater()</a>, <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00477">ClWorkloadFactory::CreateRsqrt()</a>, <a class="el" href="_neon_workload_factory_8cpp_source.xhtml#l00446">NeonWorkloadFactory::CreateRsqrt()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00523">RefWorkloadFactory::CreateRsqrt()</a>, <a class="el" href="_ref_tensor_handle_factory_8cpp_source.xhtml#l00022">RefTensorHandleFactory::CreateSubTensorHandle()</a>, <a class="el" href="_sample_dynamic_workload_factory_8hpp_source.xhtml#l00032">SampleDynamicWorkloadFactory::CreateSubTensorHandle()</a>, <a class="el" href="_ref_workload_factory_8hpp_source.xhtml#l00046">RefWorkloadFactory::CreateSubTensorHandle()</a>, <a class="el" href="_ref_tensor_handle_factory_8cpp_source.xhtml#l00035">RefTensorHandleFactory::CreateTensorHandle()</a>, <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00085">ClWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00039">ITensorHandleFactory::CreateTensorHandle()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00105">RefWorkloadFactory::CreateTensorHandle()</a>, <a class="el" href="_output_layer_8hpp_source.xhtml#l00027">OutputLayer::CreateTensorHandles()</a>, <a class="el" href="_concat_layer_8cpp_source.xhtml#l00129">ConcatLayer::CreateTensorHandles()</a>, <a class="el" href="_splitter_layer_8cpp_source.xhtml#l00103">SplitterLayer::CreateTensorHandles()</a>, <a class="el" href="_input_layer_8cpp_source.xhtml#l00020">InputLayer::CreateWorkload()</a>, <a class="el" href="_mem_copy_layer_8cpp_source.xhtml#l00027">MemCopyLayer::CreateWorkload()</a>, <a class="el" href="_mem_import_layer_8cpp_source.xhtml#l00027">MemImportLayer::CreateWorkload()</a>, <a class="el" href="_merge_layer_8cpp_source.xhtml#l00019">MergeLayer::CreateWorkload()</a>, <a class="el" href="_output_layer_8cpp_source.xhtml#l00021">OutputLayer::CreateWorkload()</a>, <a class="el" href="_stand_in_layer_8cpp_source.xhtml#l00017">StandInLayer::CreateWorkload()</a>, <a class="el" href="backends_2reference_2workloads_2_dequantize_8cpp_source.xhtml#l00013">Dequantize()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00046">SelectiveQuantizer&lt; T, false &gt;::Dequantize()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00062">SelectiveQuantizer&lt; armnn::Half, false &gt;::Dequantize()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00078">SelectiveQuantizer&lt; armnn::BFloat16, false &gt;::Dequantize()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00208">Graph::DetachObservable()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>, <a class="el" href="_division_test_impl_8cpp_source.xhtml#l00019">DivisionByZeroTest()</a>, <a class="el" href="_profiling_8cpp_source.xhtml#l00218">Profiler::EndEvent()</a>, <a class="el" href="_ref_strided_slice_workload_8cpp_source.xhtml#l00020">RefStridedSliceWorkload::Execute()</a>, <a class="el" href="_execution_frame_8cpp_source.xhtml#l00014">ExecutionFrame::ExecuteWorkloads()</a>, <a class="el" href="_fake_quantization_test_impl_8cpp_source.xhtml#l00016">FakeQuantizationTest()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00062">FalseFunc()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00070">FalseFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00078">FalseFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00094">FalseFuncI32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00086">FalseFuncU8()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00110">FalseInputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00102">FalseInputFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00126">FalseOutputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00118">FalseOutputFuncF32()</a>, <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml#l00018">Gather()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00610">MockCounterDirectory::GetCounter()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00604">MockCounterDirectory::GetCounterSet()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00598">MockCounterDirectory::GetDevice()</a>, <a class="el" href="_inference_test_image_8cpp_source.xhtml#l00311">GetImageDataInArmNnLayoutAsNormalizedFloats()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l00746">Deserializer::GetNetworkInputBindingInfo()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l00764">Deserializer::GetNetworkOutputBindingInfo()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l02159">Deserializer::GetNormalizationDescriptor()</a>, <a class="el" href="_loaded_network_8cpp_source.xhtml#l00277">LoadedNetwork::GetOutputTensorInfo()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l01808">Deserializer::GetPoolingDescriptor()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00163">MockProfilingConnectionFactory::GetProfilingConnection()</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_8hpp_source.xhtml#l00075">ITensorHandle::Import()</a>, <a class="el" href="_reshape_layer_8cpp_source.xhtml#l00033">ReshapeLayer::InferOutputShapes()</a>, <a class="el" href="_slice_layer_8cpp_source.xhtml#l00051">SliceLayer::InferOutputShapes()</a>, <a class="el" href="_stack_layer_8cpp_source.xhtml#l00033">StackLayer::InferOutputShapes()</a>, <a class="el" href="_stand_in_layer_8cpp_source.xhtml#l00031">StandInLayer::InferOutputShapes()</a>, <a class="el" href="_splitter_layer_8cpp_source.xhtml#l00128">SplitterLayer::InferOutputShapes()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00129">NeonLayerSupport::IsActivationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00178">RefLayerSupport::IsArgMinMaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00203">RefLayerSupport::IsBatchNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00249">RefLayerSupport::IsBatchToSpaceNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00298">RefLayerSupport::IsComparisonSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00328">RefLayerSupport::IsConcatSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00264">NeonLayerSupport::IsConvertFp16ToFp32Supported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00274">NeonLayerSupport::IsConvertFp32ToFp16Supported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00419">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00522">RefLayerSupport::IsDepthToSpaceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00551">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00662">RefLayerSupport::IsDetectionPostProcessSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00739">RefLayerSupport::IsElementwiseUnarySupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00785">RefLayerSupport::IsFakeQuantizationSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00377">NeonLayerSupport::IsFloorSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00803">RefLayerSupport::IsFloorSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00957">RefLayerSupport::IsInstanceNormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00989">RefLayerSupport::IsL2NormalizationSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01023">RefLayerSupport::IsLogSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01050">RefLayerSupport::IsLstmSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01369">RefLayerSupport::IsNormalizationSupported()</a>, <a class="el" href="_profiling_state_machine_8hpp_source.xhtml#l00036">ProfilingStateMachine::IsOneOfStates()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01407">RefLayerSupport::IsPadSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01437">RefLayerSupport::IsPermuteSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01467">RefLayerSupport::IsPooling2dSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00645">ClLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00617">NeonLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01534">RefLayerSupport::IsReshapeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01583">RefLayerSupport::IsResizeSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01622">RefLayerSupport::IsSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01650">RefLayerSupport::IsSoftmaxSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01680">RefLayerSupport::IsSpaceToBatchNdSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01708">RefLayerSupport::IsSpaceToDepthSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00725">ClLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00708">NeonLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01738">RefLayerSupport::IsSplitterSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01789">RefLayerSupport::IsStackSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01821">RefLayerSupport::IsStridedSliceSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01919">RefLayerSupport::IsTransposeConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01989">RefLayerSupport::IsTransposeSupported()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00187">Layer::Layer()</a>, <a class="el" href="_log_softmax_8cpp_source.xhtml#l00030">LogSoftmax()</a>, <a class="el" href="_maximum_test_impl_8cpp_source.xhtml#l00019">MaximumSimpleTest()</a>, <a class="el" href="_minimum_test_impl_8cpp_source.xhtml#l00019">MinimumBroadcast1ElementTest1()</a>, <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00182">TestFunctorA::operator()()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l01468">armnnTfParser::OutputShapeOfExpandDims()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.xhtml#l01463">TfLiteParser::OutputShapeOfSqueeze()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l02463">armnnTfParser::OutputShapeOfSqueeze()</a>, <a class="el" href="_pad_test_impl_8cpp_source.xhtml#l00020">Pad2dTestCommon()</a>, <a class="el" href="_pad_test_impl_8cpp_source.xhtml#l00093">Pad3dTestCommon()</a>, <a class="el" href="_pad_test_impl_8cpp_source.xhtml#l00177">Pad4dTestCommon()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l00171">PermuteInputsForConcat()</a>, <a class="el" href="_concat_test_impl_8cpp_source.xhtml#l00121">PermuteTensorData()</a>, <a class="el" href="_prelu_test_impl_8hpp_source.xhtml#l00023">PreluTest()</a>, <a class="el" href="_inference_test_8hpp_source.xhtml#l00099">IInferenceTestCaseProvider::ProcessCommandLineOptions()</a>, <a class="el" href="_yolo_inference_test_8hpp_source.xhtml#l00035">YoloTestCase&lt; Model &gt;::ProcessResult()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00040">SelectiveQuantizer&lt; T, false &gt;::Quantize()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00056">SelectiveQuantizer&lt; armnn::Half, false &gt;::Quantize()</a>, <a class="el" href="_quantize_helper_8hpp_source.xhtml#l00072">SelectiveQuantizer&lt; armnn::BFloat16, false &gt;::Quantize()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00129">MockProfilingConnection::ReadPacket()</a>, <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00140">TestProfilingConnectionArmnnError::ReadPacket()</a>, <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00159">TestProfilingConnectionBadAckPacket::ReadPacket()</a>, <a class="el" href="_counter_directory_8cpp_source.xhtml#l00181">CounterDirectory::RegisterCounter()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00503">MockCounterDirectory::RegisterCounter()</a>, <a class="el" href="_packet_version_resolver_8cpp_source.xhtml#l00055">PacketVersionResolver::ResolvePacketVersion()</a>, <a class="el" href="_optimize_inverse_conversions_8hpp_source.xhtml#l00021">OptimizeInverseConversionsImpl::Run()</a>, <a class="el" href="_optimize_inverse_permutes_8hpp_source.xhtml#l00022">OptimizeInversePermutesImpl&lt; PermuteType &gt;::Run()</a>, <a class="el" href="_squash_equal_siblings_8hpp_source.xhtml#l00024">SquashEqualSiblingsImpl&lt; Comparable &gt;::Run()</a>, <a class="el" href="_convert_constants_8hpp_source.xhtml#l00073">ConvertConstants&lt; Converter, Predicate &gt;::Run()</a>, <a class="el" href="_network_execution_utils_8hpp_source.xhtml#l00750">RunCsvTest()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00400">MockSendCounterPacket::SendCounterDirectoryPacket()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00411">MockSendCounterPacket::SendPeriodicCounterCapturePacket()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00423">MockSendCounterPacket::SendPeriodicCounterSelectionPacket()</a>, <a class="el" href="_base_iterator_8hpp_source.xhtml#l00107">TypedIterator&lt; const float, Decoder&lt; float &gt; &gt;::SetIndex()</a>, <a class="el" href="_logging_8cpp_source.xhtml#l00028">SetLogFilter()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00392">SimpleActivationTest()</a>, <a class="el" href="_convert_fp16_to_fp32_test_impl_8cpp_source.xhtml#l00016">SimpleConvertFp16ToFp32Test()</a>, <a class="el" href="_convert_fp32_to_fp16_test_impl_8cpp_source.xhtml#l00014">SimpleConvertFp32ToFp16Test()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00582">SimpleConvolution2d3x3NhwcTestCommon()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00635">SimpleConvolution2d3x3Stride2x2TestCommon()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00367">SimpleConvolution2dNhwcTestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00201">SimpleConvolution2dTestImpl()</a>, <a class="el" href="_floor_test_impl_8cpp_source.xhtml#l00015">SimpleFloorTest()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.xhtml#l00024">SimpleFullyConnectedTestImpl()</a>, <a class="el" href="_permute_test_impl_8hpp_source.xhtml#l00019">SimplePermuteTestImpl()</a>, <a class="el" href="_transpose_test_impl_8hpp_source.xhtml#l00019">SimpleTransposeTestImpl()</a>, <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.xhtml#l00016">Slice()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l00792">SqrtNNTest()</a>, <a class="el" href="_open_cl_timer_8cpp_source.xhtml#l00021">OpenClTimer::Start()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00404">Graph::SubstituteSubgraph()</a>, <a class="el" href="_test_dynamic_backend_8cpp_source.xhtml#l00012">TestDynamicBackendId()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l00515">TfParser::TfParser()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00054">TrueFunc()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00129">SerializerVisitor::VisitAbsLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00081">StaticRangeVisitor::VisitActivationLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00139">DynamicQuantizationVisitor::VisitActivationLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00139">SerializerVisitor::VisitActivationLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00086">DynamicQuantizationVisitor::VisitAdditionLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00032">StaticRangeVisitor::VisitAdditionLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00164">SerializerVisitor::VisitAdditionLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00179">SerializerVisitor::VisitArgMinMaxLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00093">DynamicQuantizationVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00038">StaticRangeVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00232">SerializerVisitor::VisitBatchNormalizationLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00202">SerializerVisitor::VisitBatchToSpaceNdLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00305">DynamicQuantizationVisitor::VisitBatchToSpaceNdLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00252">StaticRangeVisitor::VisitBatchToSpaceNdLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00263">SerializerVisitor::VisitComparisonLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00159">StaticRangeVisitor::VisitConcatLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00248">DynamicQuantizationVisitor::VisitConcatLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00729">SerializerVisitor::VisitConcatLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00179">StaticRangeVisitor::VisitConstantLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00220">DynamicQuantizationVisitor::VisitConstantLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00279">SerializerVisitor::VisitConstantLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00111">DynamicQuantizationVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00055">StaticRangeVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00300">SerializerVisitor::VisitConvolution2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00341">SerializerVisitor::VisitDepthToSpaceLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00068">StaticRangeVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00125">DynamicQuantizationVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00357">SerializerVisitor::VisitDepthwiseConvolution2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00394">SerializerVisitor::VisitDequantizeLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00405">SerializerVisitor::VisitDetectionPostProcessLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00436">SerializerVisitor::VisitDivisionLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00446">SerializerVisitor::VisitElementwiseUnaryLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00461">SerializerVisitor::VisitEqualLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00471">SerializerVisitor::VisitFloorLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00169">DynamicQuantizationVisitor::VisitFullyConnectedLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00110">StaticRangeVisitor::VisitFullyConnectedLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01002">SerializerVisitor::VisitFullyConnectedLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00481">SerializerVisitor::VisitGatherLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00491">SerializerVisitor::VisitGreaterLayer()</a>, <a class="el" href="_override_input_range_visitor_8cpp_source.xhtml#l00025">OverrideInputRangeVisitor::VisitInputLayer()</a>, <a class="el" href="_quantization_data_set_8cpp_source.xhtml#l00052">InputLayerVisitor::VisitInputLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00314">DynamicQuantizationVisitor::VisitInputLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00087">SerializerVisitor::VisitInputLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00501">SerializerVisitor::VisitInstanceNormalizationLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00521">SerializerVisitor::VisitL2NormalizationLayer()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00542">SerializerVisitor::VisitLogSoftmaxLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00566">SerializerVisitor::VisitLstmLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00674">SerializerVisitor::VisitMaximumLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00684">SerializerVisitor::VisitMeanLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00712">SerializerVisitor::VisitMergeLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00702">SerializerVisitor::VisitMinimumLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00764">SerializerVisitor::VisitMultiplicationLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01158">SerializerVisitor::VisitNormalizationLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00322">DynamicQuantizationVisitor::VisitOutputLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00109">SerializerVisitor::VisitOutputLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00775">SerializerVisitor::VisitPadLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00183">DynamicQuantizationVisitor::VisitPermuteLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00123">StaticRangeVisitor::VisitPermuteLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00801">SerializerVisitor::VisitPermuteLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00201">DynamicQuantizationVisitor::VisitPooling2dLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00141">StaticRangeVisitor::VisitPooling2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00947">SerializerVisitor::VisitPooling2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00976">SerializerVisitor::VisitPreluLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01333">SerializerVisitor::VisitQuantizedLstmLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00991">SerializerVisitor::VisitQuantizeLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00269">DynamicQuantizationVisitor::VisitReshapeLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00207">StaticRangeVisitor::VisitReshapeLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00829">SerializerVisitor::VisitReshapeLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00225">StaticRangeVisitor::VisitResizeBilinearLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00287">DynamicQuantizationVisitor::VisitResizeBilinearLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00855">SerializerVisitor::VisitResizeBilinearLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00234">StaticRangeVisitor::VisitResizeLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00876">SerializerVisitor::VisitResizeLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00898">SerializerVisitor::VisitRsqrtLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00908">SerializerVisitor::VisitSliceLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00150">StaticRangeVisitor::VisitSoftmaxLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00210">DynamicQuantizationVisitor::VisitSoftmaxLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l00925">SerializerVisitor::VisitSoftmaxLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00132">StaticRangeVisitor::VisitSpaceToBatchNdLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00192">DynamicQuantizationVisitor::VisitSpaceToBatchNdLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01041">SerializerVisitor::VisitSpaceToBatchNdLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01072">SerializerVisitor::VisitSpaceToDepthLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00216">StaticRangeVisitor::VisitSplitterLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00278">DynamicQuantizationVisitor::VisitSplitterLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01092">SerializerVisitor::VisitSplitterLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01183">SerializerVisitor::VisitStackLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01206">SerializerVisitor::VisitStandInLayer()</a>, <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00296">DynamicQuantizationVisitor::VisitStridedSliceLayer()</a>, <a class="el" href="_static_range_visitor_8cpp_source.xhtml#l00243">StaticRangeVisitor::VisitStridedSliceLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01222">SerializerVisitor::VisitStridedSliceLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01249">SerializerVisitor::VisitSubtractionLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01259">SerializerVisitor::VisitSwitchLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01269">SerializerVisitor::VisitTransposeConvolution2dLayer()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01306">SerializerVisitor::VisitTransposeLayer()</a>, <a class="el" href="_profiling_tests_8hpp_source.xhtml#l00078">TestProfilingConnectionBase::WritePacket()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00355">Graph::LayerInGraph&lt; InputLayer &gt;::~LayerInGraph()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00381">Graph::LayerInGraph&lt; OutputLayer &gt;::~LayerInGraph()</a>, and <a class="el" href="_profiling_8hpp_source.xhtml#l00131">ScopedProfilingEvent::~ScopedProfilingEvent()</a>.</p>
14976<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{}</div></div><!-- fragment -->
14977</div>
14978</div>
14979<a id="a46747c3d0b99968be0b37d74bc9687dd"></a>
14980<h2 class="memtitle"><span class="permalink"><a href="#a46747c3d0b99968be0b37d74bc9687dd">&#9670;&nbsp;</a></span>InitializeArmComputeClTensorData()</h2>
14981
14982<div class="memitem">
14983<div class="memproto">
14984<table class="mlabels">
14985 <tr>
14986 <td class="mlabels-left">
14987 <table class="memname">
14988 <tr>
14989 <td class="memname">void armnn::InitializeArmComputeClTensorData </td>
14990 <td>(</td>
14991 <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
14992 <td class="paramname"><em>clTensor</em>, </td>
14993 </tr>
14994 <tr>
14995 <td class="paramkey"></td>
14996 <td></td>
14997 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
14998 <td class="paramname"><em>handle</em>&#160;</td>
14999 </tr>
15000 <tr>
15001 <td></td>
15002 <td>)</td>
15003 <td></td><td></td>
15004 </tr>
15005 </table>
15006 </td>
15007 <td class="mlabels-right">
15008<span class="mlabels"><span class="mlabel">inline</span></span> </td>
15009 </tr>
15010</table>
15011</div><div class="memdoc">
15012
15013<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00090">90</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
15014<div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; BOOST_ASSERT(handle);</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; armcomputetensorutils::InitialiseArmComputeTensorEmpty(clTensor);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">CopyArmComputeClTensorData</a>(clTensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</span>);</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"> 121</span>&#160;};</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
15015<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
15016<div class="ttc" id="_utils_8hpp_xhtml_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.xhtml#l00035">Utils.hpp:35</a></div></div>
15017<div class="ttc" id="namespacearmnn_xhtml_a73447f827b995cf90d4029151514b4ba"><div class="ttname"><a href="namespacearmnn.xhtml#a73447f827b995cf90d4029151514b4ba">armnn::CopyArmComputeClTensorData</a></div><div class="ttdeci">void CopyArmComputeClTensorData(arm_compute::CLTensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00030">ClWorkloadUtils.hpp:30</a></div></div>
15018<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
15019</div><!-- fragment -->
15020</div>
15021</div>
15022<a id="ad9aa8d49d42ada3f757290033af39857"></a>
15023<h2 class="memtitle"><span class="permalink"><a href="#ad9aa8d49d42ada3f757290033af39857">&#9670;&nbsp;</a></span>InitializeArmComputeTensorData()</h2>
15024
15025<div class="memitem">
15026<div class="memproto">
15027<table class="mlabels">
15028 <tr>
15029 <td class="mlabels-left">
15030 <table class="memname">
15031 <tr>
15032 <td class="memname">void armnn::InitializeArmComputeTensorData </td>
15033 <td>(</td>
15034 <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
15035 <td class="paramname"><em>tensor</em>, </td>
15036 </tr>
15037 <tr>
15038 <td class="paramkey"></td>
15039 <td></td>
15040 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
15041 <td class="paramname"><em>handle</em>&#160;</td>
15042 </tr>
15043 <tr>
15044 <td></td>
15045 <td>)</td>
15046 <td></td><td></td>
15047 </tr>
15048 </table>
15049 </td>
15050 <td class="mlabels-right">
15051<span class="mlabels"><span class="mlabel">inline</span></span> </td>
15052 </tr>
15053</table>
15054</div><div class="memdoc">
15055
15056<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00035">35</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.xhtml">NeonWorkloadUtils.hpp</a>.</p>
15057
15058<p class="reference">References <a class="el" href="_utils_8hpp_source.xhtml#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00029">CopyArmComputeTensorData()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
15059<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; BOOST_ASSERT(handle);</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="keywordflow">switch</span>(handle-&gt;GetTensorInfo().GetDataType())</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a>&gt;());</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;<span class="keywordtype">float</span>&gt;());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;uint8_t&gt;());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> DataType::QuantizedSymm8PerAxis:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int8_t&gt;());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">CopyArmComputeTensorData</a>(tensor, handle-&gt;GetConstTensor&lt;int32_t&gt;());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unexpected tensor type.&quot;</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;};</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
15060<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
15061<div class="ttc" id="_utils_8hpp_xhtml_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.xhtml#l00035">Utils.hpp:35</a></div></div>
15062<div class="ttc" id="namespacearmnn_xhtml_a1351e01f9fb983937caf79e353142b41"><div class="ttname"><a href="namespacearmnn.xhtml#a1351e01f9fb983937caf79e353142b41">armnn::CopyArmComputeTensorData</a></div><div class="ttdeci">void CopyArmComputeTensorData(arm_compute::Tensor &amp;dstTensor, const T *srcData)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.xhtml#l00029">NeonWorkloadUtils.hpp:29</a></div></div>
15063<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
15064</div><!-- fragment -->
15065</div>
15066</div>
15067<a id="ad31c56533e4f9f9f51719599fbfcf7bb"></a>
15068<h2 class="memtitle"><span class="permalink"><a href="#ad31c56533e4f9f9f51719599fbfcf7bb">&#9670;&nbsp;</a></span>InsertConvertFp16ToFp32LayersBefore()</h2>
15069
15070<div class="memitem">
15071<div class="memproto">
15072 <table class="memname">
15073 <tr>
15074 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> * &gt; InsertConvertFp16ToFp32LayersBefore </td>
15075 <td>(</td>
15076 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
15077 <td class="paramname"><em>graph</em>, </td>
15078 </tr>
15079 <tr>
15080 <td class="paramkey"></td>
15081 <td></td>
15082 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
15083 <td class="paramname"><em>layer</em>, </td>
15084 </tr>
15085 <tr>
15086 <td class="paramkey"></td>
15087 <td></td>
15088 <td class="paramtype">bool&#160;</td>
15089 <td class="paramname"><em>expectCorrectInputType</em>&#160;</td>
15090 </tr>
15091 <tr>
15092 <td></td>
15093 <td>)</td>
15094 <td></td><td></td>
15095 </tr>
15096 </table>
15097</div><div class="memdoc">
15098
15099<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.xhtml#l00040">40</a> of file <a class="el" href="_network_utils_8cpp_source.xhtml">NetworkUtils.cpp</a>.</p>
15100
15101<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00235">Layer::BeginInputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00236">Layer::EndInputSlots()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00307">Layer::GetNumInputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.xhtml#l00058">OutputSlot::SetTensorInfo()</a>.</p>
15102
15103<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>, <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00163">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.xhtml#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
15104<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::vector&lt;ConvertFp16ToFp32Layer*&gt; convertLayers;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; convertLayers.reserve(layer.GetNumInputSlots());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Insert a ConvertFp16ToFp32Layer before each input slot</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; inputSlot = layer.BeginInputSlots(); inputSlot != layer.EndInputSlots(); ++inputSlot)</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="keywordtype">bool</span> allowInsert = <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (expectCorrectInputType)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// Only insert ConvertFp16ToFp32Layer before FP16 input slots</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; OutputSlot* connectedOutputSlot = inputSlot-&gt;GetConnectedOutputSlot();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; allowInsert =</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; connectedOutputSlot &amp;&amp; connectedOutputSlot-&gt;GetTensorInfo().GetDataType() == DataType::Float16;</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;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (allowInsert)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp16_to_fp32-&quot;</span> + std::to_string(inputSlot-&gt;GetSlotIndex()) + <span class="stringliteral">&quot;-&quot;</span>) +</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; layer.GetName();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; ConvertFp16ToFp32Layer* convertLayer =</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; graph.InsertNewLayer&lt;ConvertFp16ToFp32Layer&gt;(*inputSlot, name.c_str());</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; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; convertInfo.SetDataType(DataType::Float32);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</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"> 72</span>&#160; convertLayers.emplace_back(convertLayer);</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; }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div></div><!-- fragment -->
15105</div>
15106</div>
15107<a id="abf625e50a5eaeafce5b39580dc95a9d3"></a>
15108<h2 class="memtitle"><span class="permalink"><a href="#abf625e50a5eaeafce5b39580dc95a9d3">&#9670;&nbsp;</a></span>InsertConvertFp32ToFp16LayersAfter()</h2>
15109
15110<div class="memitem">
15111<div class="memproto">
15112 <table class="memname">
15113 <tr>
15114 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> * &gt; InsertConvertFp32ToFp16LayersAfter </td>
15115 <td>(</td>
15116 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
15117 <td class="paramname"><em>graph</em>, </td>
15118 </tr>
15119 <tr>
15120 <td class="paramkey"></td>
15121 <td></td>
15122 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
15123 <td class="paramname"><em>layer</em>&#160;</td>
15124 </tr>
15125 <tr>
15126 <td></td>
15127 <td>)</td>
15128 <td></td><td></td>
15129 </tr>
15130 </table>
15131</div><div class="memdoc">
15132
15133<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.xhtml#l00079">79</a> of file <a class="el" href="_network_utils_8cpp_source.xhtml">NetworkUtils.cpp</a>.</p>
15134
15135<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00305">Layer::GetName()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00096">TensorInfo::SetDataType()</a>, and <a class="el" href="_layer_8cpp_source.xhtml#l00058">OutputSlot::SetTensorInfo()</a>.</p>
15136
15137<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>, <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00163">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_convert_fp32_network_to_fp16_8hpp_source.xhtml#l00018">ConvertFp32NetworkToFp16Impl::Run()</a>.</p>
15138<div class="fragment"><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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputSlots = layer.GetNumOutputSlots();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::vector&lt;ConvertFp32ToFp16Layer*&gt; convertLayers;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; convertLayers.reserve(numOutputSlots);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// Update FP16 output slots to FP32 on current layer</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; ChangeOutputFp16ToFp32(layer);</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; <span class="comment">// Insert a ConvertFp32ToFp16Layer after each FP32 output slot</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIndex = 0u; slotIndex &lt; numOutputSlots; ++slotIndex)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; OutputSlot&amp; outputSlot = layer.GetOutputSlot(slotIndex);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(outputSlot.GetTensorInfo().GetDataType() == DataType::Float32)</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; <span class="keyword">const</span> std::string name =</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; std::string(<span class="stringliteral">&quot;convert_fp32_to_fp16-&quot;</span> + std::to_string(slotIndex) + <span class="stringliteral">&quot;-&quot;</span>) + layer.GetName();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; ConvertFp32ToFp16Layer* convertLayer =</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; graph.InsertNewLayer&lt;ConvertFp32ToFp16Layer&gt;(outputSlot, name.c_str());</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; TensorInfo convertInfo = convertLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; convertInfo.SetDataType(DataType::Float16);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; convertLayer-&gt;GetOutputSlot().SetTensorInfo(convertInfo);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; convertLayers.emplace_back(convertLayer);</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; }</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; <span class="keywordflow">return</span> convertLayers;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div></div><!-- fragment -->
15139</div>
15140</div>
15141<a id="a2616ffdae2db993af5c08019fb61860a"></a>
15142<h2 class="memtitle"><span class="permalink"><a href="#a2616ffdae2db993af5c08019fb61860a">&#9670;&nbsp;</a></span>InsertDebugLayerAfter()</h2>
15143
15144<div class="memitem">
15145<div class="memproto">
15146 <table class="memname">
15147 <tr>
15148 <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> * &gt; InsertDebugLayerAfter </td>
15149 <td>(</td>
15150 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
15151 <td class="paramname"><em>graph</em>, </td>
15152 </tr>
15153 <tr>
15154 <td class="paramkey"></td>
15155 <td></td>
15156 <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
15157 <td class="paramname"><em>layer</em>&#160;</td>
15158 </tr>
15159 <tr>
15160 <td></td>
15161 <td>)</td>
15162 <td></td><td></td>
15163 </tr>
15164 </table>
15165</div><div class="memdoc">
15166
15167<p class="definition">Definition at line <a class="el" href="_network_utils_8cpp_source.xhtml#l00112">112</a> of file <a class="el" href="_network_utils_8cpp_source.xhtml">NetworkUtils.cpp</a>.</p>
15168
15169<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00239">Layer::BeginOutputSlots()</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00240">Layer::EndOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00055">InputSlot::GetConnectedOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00310">Layer::GetInputSlot()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00216">Layer::GetNameStr()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00063">OutputSlot::GetTensorInfo()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00409">Graph::InsertNewLayer()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00264">Layer::SetBackendId()</a>, and <a class="el" href="_layer_8cpp_source.xhtml#l00058">OutputSlot::SetTensorInfo()</a>.</p>
15170
15171<p class="reference">Referenced by <a class="el" href="_dynamic_quantization_visitor_8cpp_source.xhtml#l00050">DynamicQuantizationVisitor::FinishVisit()</a>, and <a class="el" href="_add_debug_8hpp_source.xhtml#l00019">AddDebugImpl::Run()</a>.</p>
15172<div class="fragment"><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; std::vector&lt;DebugLayer*&gt; debugLayers;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; debugLayers.reserve(layer.GetNumOutputSlots());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Connect a DebugLayer to each output slot of the layer</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> outputSlot = layer.BeginOutputSlots(); outputSlot != layer.EndOutputSlots(); ++outputSlot)</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; <span class="keyword">const</span> std::string debugName = std::string(<span class="stringliteral">&quot;DebugLayerAfter&quot;</span>) + layer.GetNameStr();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; DebugLayer* debugLayer =</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; graph.InsertNewLayer&lt;DebugLayer&gt;(*outputSlot, debugName.c_str());</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// Sets output tensor info for the debug layer.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; BOOST_ASSERT(debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot() == &amp;(*outputSlot));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; TensorInfo debugInfo = debugLayer-&gt;GetInputSlot(0).GetConnectedOutputSlot()-&gt;GetTensorInfo();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; debugLayer-&gt;GetOutputSlot().SetTensorInfo(debugInfo);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="comment">// NOTE: It is OK to do this because DebugLayer is only supported on CpuRef</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; debugLayer-&gt;SetBackendId(Compute::CpuRef);</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; debugLayers.emplace_back(debugLayer);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> debugLayers;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div></div><!-- fragment -->
15173</div>
15174</div>
15175<a id="ac3d98d09064176b259e8a9038b06699d"></a>
15176<h2 class="memtitle"><span class="permalink"><a href="#ac3d98d09064176b259e8a9038b06699d">&#9670;&nbsp;</a></span>InstanceNorm()</h2>
15177
15178<div class="memitem">
15179<div class="memproto">
15180 <table class="memname">
15181 <tr>
15182 <td class="memname">void InstanceNorm </td>
15183 <td>(</td>
15184 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.xhtml">InstanceNormalizationQueueDescriptor</a> &amp;&#160;</td>
15185 <td class="paramname"><em>data</em>, </td>
15186 </tr>
15187 <tr>
15188 <td class="paramkey"></td>
15189 <td></td>
15190 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
15191 <td class="paramname"><em>inputDecoder</em>, </td>
15192 </tr>
15193 <tr>
15194 <td class="paramkey"></td>
15195 <td></td>
15196 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
15197 <td class="paramname"><em>outputEncoder</em>&#160;</td>
15198 </tr>
15199 <tr>
15200 <td></td>
15201 <td>)</td>
15202 <td></td><td></td>
15203 </tr>
15204 </table>
15205</div><div class="memdoc">
15206
15207<p class="definition">Definition at line <a class="el" href="_instance_norm_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_instance_norm_8cpp_source.xhtml">InstanceNorm.cpp</a>.</p>
15208
15209<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00649">InstanceNormalizationDescriptor::m_Beta</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00653">InstanceNormalizationDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00651">InstanceNormalizationDescriptor::m_Eps</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00647">InstanceNormalizationDescriptor::m_Gamma</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
15210
15211<p class="reference">Referenced by <a class="el" href="_ref_instance_normalization_workload_8cpp_source.xhtml#l00021">RefInstanceNormalizationWorkload::Execute()</a>.</p>
15212<div class="fragment"><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="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a> dataLayout(data.m_Parameters.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = inputShape[0];</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.GetHeightIndex()];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.GetWidthIndex()];</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.GetChannelsIndex()];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">float</span> beta = data.m_Parameters.m_Beta;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">float</span> eps = data.m_Parameters.m_Eps;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">float</span> gamma = data.m_Parameters.m_Gamma;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; inputBatches; ++n)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; ++c)</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="keywordtype">float</span> mean = 0, var = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">//Calculate Mean</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; mean += value;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</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; mean /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">//Calculate Variance</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; w++)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">float</span> value = inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; var += (value - mean) * (value - mean);</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; var /= <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(inputHeight * inputWidth);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Apply Instance Normalisation</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; ++h)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth; ++w)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = dataLayout.GetIndex(inputShape, n, c, h, w);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; inputDecoder[index];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputEncoder[index];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>((inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() - mean) * gamma / std::sqrt ( var + eps) + beta);</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; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
15213<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
15214<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
15215<div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
15216</div><!-- fragment -->
15217</div>
15218</div>
15219<a id="abf6aad7bc221f8ad22b4d99cd020373b"></a>
15220<h2 class="memtitle"><span class="permalink"><a href="#abf6aad7bc221f8ad22b4d99cd020373b">&#9670;&nbsp;</a></span>IntersectionOverUnion()</h2>
15221
15222<div class="memitem">
15223<div class="memproto">
15224 <table class="memname">
15225 <tr>
15226 <td class="memname">float IntersectionOverUnion </td>
15227 <td>(</td>
15228 <td class="paramtype">const float *&#160;</td>
15229 <td class="paramname"><em>boxI</em>, </td>
15230 </tr>
15231 <tr>
15232 <td class="paramkey"></td>
15233 <td></td>
15234 <td class="paramtype">const float *&#160;</td>
15235 <td class="paramname"><em>boxJ</em>&#160;</td>
15236 </tr>
15237 <tr>
15238 <td></td>
15239 <td>)</td>
15240 <td></td><td></td>
15241 </tr>
15242 </table>
15243</div><div class="memdoc">
15244
15245<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
15246
15247<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.xhtml#l00042">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">NonMaxSuppression()</a>.</p>
15248<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="comment">// Box-corner format: ymin, xmin, ymax, xmax.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMin = 0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMin = 1;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> yMax = 2;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> xMax = 3;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">float</span> areaI = (boxI[yMax] - boxI[yMin]) * (boxI[xMax] - boxI[xMin]);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">float</span> areaJ = (boxJ[yMax] - boxJ[yMin]) * (boxJ[xMax] - boxJ[xMin]);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">float</span> yMinIntersection = std::max(boxI[yMin], boxJ[yMin]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">float</span> xMinIntersection = std::max(boxI[xMin], boxJ[xMin]);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">float</span> yMaxIntersection = std::min(boxI[yMax], boxJ[yMax]);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">float</span> xMaxIntersection = std::min(boxI[xMax], boxJ[xMax]);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> areaIntersection = std::max(yMaxIntersection - yMinIntersection, 0.0f) *</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::max(xMaxIntersection - xMinIntersection, 0.0f);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">float</span> areaUnion = areaI + areaJ - areaIntersection;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> areaIntersection / areaUnion;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
15249</div>
15250</div>
15251<a id="a58bfb9626d373249745d78b95543116e"></a>
15252<h2 class="memtitle"><span class="permalink"><a href="#a58bfb9626d373249745d78b95543116e">&#9670;&nbsp;</a></span>IsActivationSupported()</h2>
15253
15254<div class="memitem">
15255<div class="memproto">
15256 <table class="memname">
15257 <tr>
15258 <td class="memname">bool IsActivationSupported </td>
15259 <td>(</td>
15260 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15261 <td class="paramname"><em>backend</em>, </td>
15262 </tr>
15263 <tr>
15264 <td class="paramkey"></td>
15265 <td></td>
15266 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15267 <td class="paramname"><em>input</em>, </td>
15268 </tr>
15269 <tr>
15270 <td class="paramkey"></td>
15271 <td></td>
15272 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15273 <td class="paramname"><em>output</em>, </td>
15274 </tr>
15275 <tr>
15276 <td class="paramkey"></td>
15277 <td></td>
15278 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
15279 <td class="paramname"><em>descriptor</em>, </td>
15280 </tr>
15281 <tr>
15282 <td class="paramkey"></td>
15283 <td></td>
15284 <td class="paramtype">char *&#160;</td>
15285 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15286 </tr>
15287 <tr>
15288 <td class="paramkey"></td>
15289 <td></td>
15290 <td class="paramtype">size_t&#160;</td>
15291 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15292 </tr>
15293 <tr>
15294 <td></td>
15295 <td>)</td>
15296 <td></td><td></td>
15297 </tr>
15298 </table>
15299</div><div class="memdoc">
15300
15301<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15302
15303<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00069">69</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15304
15305<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15306
15307<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
15308<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a58bfb9626d373249745d78b95543116e">IsActivationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15309<div class="ttc" id="namespacearmnn_xhtml_a58bfb9626d373249745d78b95543116e"><div class="ttname"><a href="namespacearmnn.xhtml#a58bfb9626d373249745d78b95543116e">armnn::IsActivationSupported</a></div><div class="ttdeci">bool IsActivationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ActivationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00069">LayerSupport.cpp:69</a></div></div>
15310</div><!-- fragment -->
15311</div>
15312</div>
15313<a id="a1b01771dc5a057d09f8cd82492154a1f"></a>
15314<h2 class="memtitle"><span class="permalink"><a href="#a1b01771dc5a057d09f8cd82492154a1f">&#9670;&nbsp;</a></span>IsAdditionSupported()</h2>
15315
15316<div class="memitem">
15317<div class="memproto">
15318 <table class="memname">
15319 <tr>
15320 <td class="memname">bool IsAdditionSupported </td>
15321 <td>(</td>
15322 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15323 <td class="paramname"><em>backend</em>, </td>
15324 </tr>
15325 <tr>
15326 <td class="paramkey"></td>
15327 <td></td>
15328 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15329 <td class="paramname"><em>input0</em>, </td>
15330 </tr>
15331 <tr>
15332 <td class="paramkey"></td>
15333 <td></td>
15334 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15335 <td class="paramname"><em>input1</em>, </td>
15336 </tr>
15337 <tr>
15338 <td class="paramkey"></td>
15339 <td></td>
15340 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15341 <td class="paramname"><em>output</em>, </td>
15342 </tr>
15343 <tr>
15344 <td class="paramkey"></td>
15345 <td></td>
15346 <td class="paramtype">char *&#160;</td>
15347 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15348 </tr>
15349 <tr>
15350 <td class="paramkey"></td>
15351 <td></td>
15352 <td class="paramtype">size_t&#160;</td>
15353 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15354 </tr>
15355 <tr>
15356 <td></td>
15357 <td>)</td>
15358 <td></td><td></td>
15359 </tr>
15360 </table>
15361</div><div class="memdoc">
15362
15363<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15364
15365<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00079">79</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15366
15367<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00064">CheckTensorDataTypesEqual()</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15368<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespacearmnn.xhtml#ac7cce6c8c3c53b2feeba6548fc3fb00c">CheckTensorDataTypesEqual</a>(input0, input1))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a1b01771dc5a057d09f8cd82492154a1f">IsAdditionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15369<div class="ttc" id="namespacearmnn_xhtml_a1b01771dc5a057d09f8cd82492154a1f"><div class="ttname"><a href="namespacearmnn.xhtml#a1b01771dc5a057d09f8cd82492154a1f">armnn::IsAdditionSupported</a></div><div class="ttdeci">bool IsAdditionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00079">LayerSupport.cpp:79</a></div></div>
15370<div class="ttc" id="namespacearmnn_xhtml_ac7cce6c8c3c53b2feeba6548fc3fb00c"><div class="ttname"><a href="namespacearmnn.xhtml#ac7cce6c8c3c53b2feeba6548fc3fb00c">armnn::CheckTensorDataTypesEqual</a></div><div class="ttdeci">bool CheckTensorDataTypesEqual(const TensorInfo &amp;input0, const TensorInfo &amp;input1)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00064">LayerSupport.cpp:64</a></div></div>
15371</div><!-- fragment -->
15372</div>
15373</div>
15374<a id="aa8d5d17d1edd51d899fe699eb6156b58"></a>
15375<h2 class="memtitle"><span class="permalink"><a href="#aa8d5d17d1edd51d899fe699eb6156b58">&#9670;&nbsp;</a></span>IsArgMinMaxSupported()</h2>
15376
15377<div class="memitem">
15378<div class="memproto">
15379 <table class="memname">
15380 <tr>
15381 <td class="memname">bool armnn::IsArgMinMaxSupported </td>
15382 <td>(</td>
15383 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15384 <td class="paramname"><em>backend</em>, </td>
15385 </tr>
15386 <tr>
15387 <td class="paramkey"></td>
15388 <td></td>
15389 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15390 <td class="paramname"><em>input</em>, </td>
15391 </tr>
15392 <tr>
15393 <td class="paramkey"></td>
15394 <td></td>
15395 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15396 <td class="paramname"><em>output</em>, </td>
15397 </tr>
15398 <tr>
15399 <td class="paramkey"></td>
15400 <td></td>
15401 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
15402 <td class="paramname"><em>descriptor</em>, </td>
15403 </tr>
15404 <tr>
15405 <td class="paramkey"></td>
15406 <td></td>
15407 <td class="paramtype">char *&#160;</td>
15408 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
15409 </tr>
15410 <tr>
15411 <td class="paramkey"></td>
15412 <td></td>
15413 <td class="paramtype">size_t&#160;</td>
15414 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
15415 </tr>
15416 <tr>
15417 <td></td>
15418 <td>)</td>
15419 <td></td><td></td>
15420 </tr>
15421 </table>
15422</div><div class="memdoc">
15423
15424<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00094">94</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15425
15426<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15427<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aa8d5d17d1edd51d899fe699eb6156b58">IsArgMinMaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aa8d5d17d1edd51d899fe699eb6156b58"><div class="ttname"><a href="namespacearmnn.xhtml#aa8d5d17d1edd51d899fe699eb6156b58">armnn::IsArgMinMaxSupported</a></div><div class="ttdeci">bool IsArgMinMaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ArgMinMaxDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00094">LayerSupport.cpp:94</a></div></div>
15428<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15429</div><!-- fragment -->
15430</div>
15431</div>
15432<a id="a7d18d6613bb865b66b05d4d6e0391934"></a>
15433<h2 class="memtitle"><span class="permalink"><a href="#a7d18d6613bb865b66b05d4d6e0391934">&#9670;&nbsp;</a></span>IsBatchNormalizationSupported()</h2>
15434
15435<div class="memitem">
15436<div class="memproto">
15437 <table class="memname">
15438 <tr>
15439 <td class="memname">bool IsBatchNormalizationSupported </td>
15440 <td>(</td>
15441 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15442 <td class="paramname"><em>backend</em>, </td>
15443 </tr>
15444 <tr>
15445 <td class="paramkey"></td>
15446 <td></td>
15447 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15448 <td class="paramname"><em>input</em>, </td>
15449 </tr>
15450 <tr>
15451 <td class="paramkey"></td>
15452 <td></td>
15453 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15454 <td class="paramname"><em>output</em>, </td>
15455 </tr>
15456 <tr>
15457 <td class="paramkey"></td>
15458 <td></td>
15459 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15460 <td class="paramname"><em>mean</em>, </td>
15461 </tr>
15462 <tr>
15463 <td class="paramkey"></td>
15464 <td></td>
15465 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15466 <td class="paramname"><em>var</em>, </td>
15467 </tr>
15468 <tr>
15469 <td class="paramkey"></td>
15470 <td></td>
15471 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15472 <td class="paramname"><em>beta</em>, </td>
15473 </tr>
15474 <tr>
15475 <td class="paramkey"></td>
15476 <td></td>
15477 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15478 <td class="paramname"><em>gamma</em>, </td>
15479 </tr>
15480 <tr>
15481 <td class="paramkey"></td>
15482 <td></td>
15483 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
15484 <td class="paramname"><em>descriptor</em>, </td>
15485 </tr>
15486 <tr>
15487 <td class="paramkey"></td>
15488 <td></td>
15489 <td class="paramtype">char *&#160;</td>
15490 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15491 </tr>
15492 <tr>
15493 <td class="paramkey"></td>
15494 <td></td>
15495 <td class="paramtype">size_t&#160;</td>
15496 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15497 </tr>
15498 <tr>
15499 <td></td>
15500 <td>)</td>
15501 <td></td><td></td>
15502 </tr>
15503 </table>
15504</div><div class="memdoc">
15505
15506<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15507
15508<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00104">104</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15509
15510<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15511<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7d18d6613bb865b66b05d4d6e0391934">IsBatchNormalizationSupported</a>,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; input,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; output,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; mean,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; var,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; beta,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; gamma,</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; descriptor);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15512<div class="ttc" id="namespacearmnn_xhtml_a7d18d6613bb865b66b05d4d6e0391934"><div class="ttname"><a href="namespacearmnn.xhtml#a7d18d6613bb865b66b05d4d6e0391934">armnn::IsBatchNormalizationSupported</a></div><div class="ttdeci">bool IsBatchNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;mean, const TensorInfo &amp;var, const TensorInfo &amp;beta, const TensorInfo &amp;gamma, const BatchNormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00104">LayerSupport.cpp:104</a></div></div>
15513</div><!-- fragment -->
15514</div>
15515</div>
15516<a id="a2399052d9cbb2b88720b07511a2e362f"></a>
15517<h2 class="memtitle"><span class="permalink"><a href="#a2399052d9cbb2b88720b07511a2e362f">&#9670;&nbsp;</a></span>IsBatchToSpaceNdSupported()</h2>
15518
15519<div class="memitem">
15520<div class="memproto">
15521 <table class="memname">
15522 <tr>
15523 <td class="memname">bool IsBatchToSpaceNdSupported </td>
15524 <td>(</td>
15525 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15526 <td class="paramname"><em>backend</em>, </td>
15527 </tr>
15528 <tr>
15529 <td class="paramkey"></td>
15530 <td></td>
15531 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15532 <td class="paramname"><em>input</em>, </td>
15533 </tr>
15534 <tr>
15535 <td class="paramkey"></td>
15536 <td></td>
15537 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15538 <td class="paramname"><em>output</em>, </td>
15539 </tr>
15540 <tr>
15541 <td class="paramkey"></td>
15542 <td></td>
15543 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
15544 <td class="paramname"><em>descriptor</em>, </td>
15545 </tr>
15546 <tr>
15547 <td class="paramkey"></td>
15548 <td></td>
15549 <td class="paramtype">char *&#160;</td>
15550 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15551 </tr>
15552 <tr>
15553 <td class="paramkey"></td>
15554 <td></td>
15555 <td class="paramtype">size_t&#160;</td>
15556 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15557 </tr>
15558 <tr>
15559 <td></td>
15560 <td>)</td>
15561 <td></td><td></td>
15562 </tr>
15563 </table>
15564</div><div class="memdoc">
15565
15566<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15567
15568<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00126">126</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15569
15570<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15571<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2399052d9cbb2b88720b07511a2e362f">IsBatchToSpaceNdSupported</a>,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; input,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; output,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; descriptor);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a2399052d9cbb2b88720b07511a2e362f"><div class="ttname"><a href="namespacearmnn.xhtml#a2399052d9cbb2b88720b07511a2e362f">armnn::IsBatchToSpaceNdSupported</a></div><div class="ttdeci">bool IsBatchToSpaceNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const BatchToSpaceNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00126">LayerSupport.cpp:126</a></div></div>
15572<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15573</div><!-- fragment -->
15574</div>
15575</div>
15576<a id="a3d504240723912bf9c76ff3afeaa25c5"></a>
15577<h2 class="memtitle"><span class="permalink"><a href="#a3d504240723912bf9c76ff3afeaa25c5">&#9670;&nbsp;</a></span>IsBFloat16()</h2>
15578
15579<div class="memitem">
15580<div class="memproto">
15581 <table class="memname">
15582 <tr>
15583 <td class="memname">bool armnn::IsBFloat16 </td>
15584 <td>(</td>
15585 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
15586 <td class="paramname"><em>info</em></td><td>)</td>
15587 <td></td>
15588 </tr>
15589 </table>
15590</div><div class="memdoc">
15591
15592<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00053">53</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
15593
15594<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
15595
15596<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00442">RefWorkloadFactory::CreatePad()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00460">RefWorkloadFactory::CreatePermute()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00581">RefWorkloadFactory::CreateTranspose()</a>.</p>
15597<div class="fragment"><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::BFloat16&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
15598</div><!-- fragment -->
15599</div>
15600</div>
15601<a id="a757df85e956e425c1a082d35a98ca4a9"></a>
15602<h2 class="memtitle"><span class="permalink"><a href="#a757df85e956e425c1a082d35a98ca4a9">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[1/2]</span></h2>
15603
15604<div class="memitem">
15605<div class="memproto">
15606 <table class="memname">
15607 <tr>
15608 <td class="memname">bool armnn::IsConcatSupported </td>
15609 <td>(</td>
15610 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15611 <td class="paramname"><em>backend</em>, </td>
15612 </tr>
15613 <tr>
15614 <td class="paramkey"></td>
15615 <td></td>
15616 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
15617 <td class="paramname"><em>inputs</em>, </td>
15618 </tr>
15619 <tr>
15620 <td class="paramkey"></td>
15621 <td></td>
15622 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15623 <td class="paramname"><em>output</em>, </td>
15624 </tr>
15625 <tr>
15626 <td class="paramkey"></td>
15627 <td></td>
15628 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
15629 <td class="paramname"><em>descriptor</em>, </td>
15630 </tr>
15631 <tr>
15632 <td class="paramkey"></td>
15633 <td></td>
15634 <td class="paramtype">char *&#160;</td>
15635 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15636 </tr>
15637 <tr>
15638 <td class="paramkey"></td>
15639 <td></td>
15640 <td class="paramtype">size_t&#160;</td>
15641 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15642 </tr>
15643 <tr>
15644 <td></td>
15645 <td>)</td>
15646 <td></td><td></td>
15647 </tr>
15648 </table>
15649</div><div class="memdoc">
15650
15651<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15652
15653<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00140">IsConcatSupported()</a>, and <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01260">RefLayerSupport::IsMergerSupported()</a>.</p>
15654
15655</div>
15656</div>
15657<a id="ae1fc9dbaad02fff7f7227cc10536e1ee"></a>
15658<h2 class="memtitle"><span class="permalink"><a href="#ae1fc9dbaad02fff7f7227cc10536e1ee">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[2/2]</span></h2>
15659
15660<div class="memitem">
15661<div class="memproto">
15662 <table class="memname">
15663 <tr>
15664 <td class="memname">bool armnn::IsConcatSupported </td>
15665 <td>(</td>
15666 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15667 <td class="paramname"><em>backend</em>, </td>
15668 </tr>
15669 <tr>
15670 <td class="paramkey"></td>
15671 <td></td>
15672 <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
15673 <td class="paramname"><em>inputs</em>, </td>
15674 </tr>
15675 <tr>
15676 <td class="paramkey"></td>
15677 <td></td>
15678 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15679 <td class="paramname"><em>output</em>, </td>
15680 </tr>
15681 <tr>
15682 <td class="paramkey"></td>
15683 <td></td>
15684 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
15685 <td class="paramname"><em>descriptor</em>, </td>
15686 </tr>
15687 <tr>
15688 <td class="paramkey"></td>
15689 <td></td>
15690 <td class="paramtype">char *&#160;</td>
15691 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
15692 </tr>
15693 <tr>
15694 <td class="paramkey"></td>
15695 <td></td>
15696 <td class="paramtype">size_t&#160;</td>
15697 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
15698 </tr>
15699 <tr>
15700 <td></td>
15701 <td>)</td>
15702 <td></td><td></td>
15703 </tr>
15704 </table>
15705</div><div class="memdoc">
15706
15707<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00140">140</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15708
15709<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#a757df85e956e425c1a082d35a98ca4a9">IsConcatSupported()</a>.</p>
15710<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;{</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; BOOST_ASSERT(inputs.size() &gt; 0);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#ae1fc9dbaad02fff7f7227cc10536e1ee">IsConcatSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15711<div class="ttc" id="namespacearmnn_xhtml_ae1fc9dbaad02fff7f7227cc10536e1ee"><div class="ttname"><a href="namespacearmnn.xhtml#ae1fc9dbaad02fff7f7227cc10536e1ee">armnn::IsConcatSupported</a></div><div class="ttdeci">bool IsConcatSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00140">LayerSupport.cpp:140</a></div></div>
15712</div><!-- fragment -->
15713</div>
15714</div>
15715<a id="acc76cdec78906a3457a9c2293a453869"></a>
15716<h2 class="memtitle"><span class="permalink"><a href="#acc76cdec78906a3457a9c2293a453869">&#9670;&nbsp;</a></span>IsConstantSupported()</h2>
15717
15718<div class="memitem">
15719<div class="memproto">
15720 <table class="memname">
15721 <tr>
15722 <td class="memname">bool IsConstantSupported </td>
15723 <td>(</td>
15724 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15725 <td class="paramname"><em>backend</em>, </td>
15726 </tr>
15727 <tr>
15728 <td class="paramkey"></td>
15729 <td></td>
15730 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15731 <td class="paramname"><em>output</em>, </td>
15732 </tr>
15733 <tr>
15734 <td class="paramkey"></td>
15735 <td></td>
15736 <td class="paramtype">char *&#160;</td>
15737 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15738 </tr>
15739 <tr>
15740 <td class="paramkey"></td>
15741 <td></td>
15742 <td class="paramtype">size_t&#160;</td>
15743 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15744 </tr>
15745 <tr>
15746 <td></td>
15747 <td>)</td>
15748 <td></td><td></td>
15749 </tr>
15750 </table>
15751</div><div class="memdoc">
15752
15753<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15754
15755<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00152">152</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15756
15757<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15758<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#acc76cdec78906a3457a9c2293a453869">IsConstantSupported</a>, output);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15759<div class="ttc" id="namespacearmnn_xhtml_acc76cdec78906a3457a9c2293a453869"><div class="ttname"><a href="namespacearmnn.xhtml#acc76cdec78906a3457a9c2293a453869">armnn::IsConstantSupported</a></div><div class="ttdeci">bool IsConstantSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00152">LayerSupport.cpp:152</a></div></div>
15760</div><!-- fragment -->
15761</div>
15762</div>
15763<a id="aaa152f86599af5189c9d637fe7ade6d0"></a>
15764<h2 class="memtitle"><span class="permalink"><a href="#aaa152f86599af5189c9d637fe7ade6d0">&#9670;&nbsp;</a></span>IsConvertFp16ToFp32Supported()</h2>
15765
15766<div class="memitem">
15767<div class="memproto">
15768 <table class="memname">
15769 <tr>
15770 <td class="memname">bool IsConvertFp16ToFp32Supported </td>
15771 <td>(</td>
15772 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15773 <td class="paramname"><em>backend</em>, </td>
15774 </tr>
15775 <tr>
15776 <td class="paramkey"></td>
15777 <td></td>
15778 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15779 <td class="paramname"><em>input</em>, </td>
15780 </tr>
15781 <tr>
15782 <td class="paramkey"></td>
15783 <td></td>
15784 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15785 <td class="paramname"><em>output</em>, </td>
15786 </tr>
15787 <tr>
15788 <td class="paramkey"></td>
15789 <td></td>
15790 <td class="paramtype">char *&#160;</td>
15791 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15792 </tr>
15793 <tr>
15794 <td class="paramkey"></td>
15795 <td></td>
15796 <td class="paramtype">size_t&#160;</td>
15797 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15798 </tr>
15799 <tr>
15800 <td></td>
15801 <td>)</td>
15802 <td></td><td></td>
15803 </tr>
15804 </table>
15805</div><div class="memdoc">
15806
15807<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15808
15809<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00160">160</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15810
15811<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15812<div class="fragment"><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aaa152f86599af5189c9d637fe7ade6d0">IsConvertFp16ToFp32Supported</a>, input, output);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aaa152f86599af5189c9d637fe7ade6d0"><div class="ttname"><a href="namespacearmnn.xhtml#aaa152f86599af5189c9d637fe7ade6d0">armnn::IsConvertFp16ToFp32Supported</a></div><div class="ttdeci">bool IsConvertFp16ToFp32Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00160">LayerSupport.cpp:160</a></div></div>
15813<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15814</div><!-- fragment -->
15815</div>
15816</div>
15817<a id="a98994026cec1578ceb7aa74c834b00d9"></a>
15818<h2 class="memtitle"><span class="permalink"><a href="#a98994026cec1578ceb7aa74c834b00d9">&#9670;&nbsp;</a></span>IsConvertFp32ToFp16Supported()</h2>
15819
15820<div class="memitem">
15821<div class="memproto">
15822 <table class="memname">
15823 <tr>
15824 <td class="memname">bool IsConvertFp32ToFp16Supported </td>
15825 <td>(</td>
15826 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15827 <td class="paramname"><em>backend</em>, </td>
15828 </tr>
15829 <tr>
15830 <td class="paramkey"></td>
15831 <td></td>
15832 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15833 <td class="paramname"><em>input</em>, </td>
15834 </tr>
15835 <tr>
15836 <td class="paramkey"></td>
15837 <td></td>
15838 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15839 <td class="paramname"><em>output</em>, </td>
15840 </tr>
15841 <tr>
15842 <td class="paramkey"></td>
15843 <td></td>
15844 <td class="paramtype">char *&#160;</td>
15845 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15846 </tr>
15847 <tr>
15848 <td class="paramkey"></td>
15849 <td></td>
15850 <td class="paramtype">size_t&#160;</td>
15851 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15852 </tr>
15853 <tr>
15854 <td></td>
15855 <td>)</td>
15856 <td></td><td></td>
15857 </tr>
15858 </table>
15859</div><div class="memdoc">
15860
15861<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15862
15863<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00169">169</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15864
15865<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15866<div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;{</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a98994026cec1578ceb7aa74c834b00d9">IsConvertFp32ToFp16Supported</a>, input, output);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a98994026cec1578ceb7aa74c834b00d9"><div class="ttname"><a href="namespacearmnn.xhtml#a98994026cec1578ceb7aa74c834b00d9">armnn::IsConvertFp32ToFp16Supported</a></div><div class="ttdeci">bool IsConvertFp32ToFp16Supported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00169">LayerSupport.cpp:169</a></div></div>
15867<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15868</div><!-- fragment -->
15869</div>
15870</div>
15871<a id="af22d4421773ce95e0f2324fc1a66c0d9"></a>
15872<h2 class="memtitle"><span class="permalink"><a href="#af22d4421773ce95e0f2324fc1a66c0d9">&#9670;&nbsp;</a></span>IsConvolution2dSupported()</h2>
15873
15874<div class="memitem">
15875<div class="memproto">
15876 <table class="memname">
15877 <tr>
15878 <td class="memname">bool IsConvolution2dSupported </td>
15879 <td>(</td>
15880 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15881 <td class="paramname"><em>backend</em>, </td>
15882 </tr>
15883 <tr>
15884 <td class="paramkey"></td>
15885 <td></td>
15886 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15887 <td class="paramname"><em>input</em>, </td>
15888 </tr>
15889 <tr>
15890 <td class="paramkey"></td>
15891 <td></td>
15892 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15893 <td class="paramname"><em>output</em>, </td>
15894 </tr>
15895 <tr>
15896 <td class="paramkey"></td>
15897 <td></td>
15898 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
15899 <td class="paramname"><em>descriptor</em>, </td>
15900 </tr>
15901 <tr>
15902 <td class="paramkey"></td>
15903 <td></td>
15904 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15905 <td class="paramname"><em>weights</em>, </td>
15906 </tr>
15907 <tr>
15908 <td class="paramkey"></td>
15909 <td></td>
15910 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
15911 <td class="paramname"><em>biases</em>, </td>
15912 </tr>
15913 <tr>
15914 <td class="paramkey"></td>
15915 <td></td>
15916 <td class="paramtype">char *&#160;</td>
15917 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15918 </tr>
15919 <tr>
15920 <td class="paramkey"></td>
15921 <td></td>
15922 <td class="paramtype">size_t&#160;</td>
15923 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
15924 </tr>
15925 <tr>
15926 <td></td>
15927 <td>)</td>
15928 <td></td><td></td>
15929 </tr>
15930 </table>
15931</div><div class="memdoc">
15932
15933<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
15934
15935<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00178">178</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
15936
15937<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
15938<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#af22d4421773ce95e0f2324fc1a66c0d9">IsConvolution2dSupported</a>, input, output, descriptor, weights, biases);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
15939<div class="ttc" id="namespacearmnn_xhtml_af22d4421773ce95e0f2324fc1a66c0d9"><div class="ttname"><a href="namespacearmnn.xhtml#af22d4421773ce95e0f2324fc1a66c0d9">armnn::IsConvolution2dSupported</a></div><div class="ttdeci">bool IsConvolution2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Convolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00178">LayerSupport.cpp:178</a></div></div>
15940</div><!-- fragment -->
15941</div>
15942</div>
15943<a id="a6a2e058d934e9d784eab57ee7121d69c"></a>
15944<h2 class="memtitle"><span class="permalink"><a href="#a6a2e058d934e9d784eab57ee7121d69c">&#9670;&nbsp;</a></span>IsDataType()</h2>
15945
15946<div class="memitem">
15947<div class="memproto">
15948 <table class="memname">
15949 <tr>
15950 <td class="memname">bool armnn::IsDataType </td>
15951 <td>(</td>
15952 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
15953 <td class="paramname"><em>info</em></td><td>)</td>
15954 <td></td>
15955 </tr>
15956 </table>
15957</div><div class="memdoc">
15958
15959<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00032">32</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
15960
15961<p class="reference">References <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00018">WorkloadInfo::m_InputTensorInfos</a>, and <a class="el" href="include_2armnn_2backends_2_workload_info_8hpp_source.xhtml#l00019">WorkloadInfo::m_OutputTensorInfos</a>.</p>
15962<div class="fragment"><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; <span class="keyword">auto</span> checkType = [](<span class="keyword">const</span> TensorInfo&amp; tensorInfo) {<span class="keywordflow">return</span> tensorInfo.GetDataType() == ArmnnType;};</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">auto</span> it = std::find_if(std::begin(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), std::end(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos), checkType);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_InputTensorInfos))</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; it = std::find_if(std::begin(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), std::end(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos), checkType);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (it != std::end(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.m_OutputTensorInfos))</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
15963</div><!-- fragment -->
15964</div>
15965</div>
15966<a id="a8b96de58aae24091d0ad761f27360630"></a>
15967<h2 class="memtitle"><span class="permalink"><a href="#a8b96de58aae24091d0ad761f27360630">&#9670;&nbsp;</a></span>IsDebugSupported()</h2>
15968
15969<div class="memitem">
15970<div class="memproto">
15971 <table class="memname">
15972 <tr>
15973 <td class="memname">bool IsDebugSupported </td>
15974 <td>(</td>
15975 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
15976 <td class="paramname"><em>backend</em>, </td>
15977 </tr>
15978 <tr>
15979 <td class="paramkey"></td>
15980 <td></td>
15981 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15982 <td class="paramname"><em>input</em>, </td>
15983 </tr>
15984 <tr>
15985 <td class="paramkey"></td>
15986 <td></td>
15987 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
15988 <td class="paramname"><em>output</em>, </td>
15989 </tr>
15990 <tr>
15991 <td class="paramkey"></td>
15992 <td></td>
15993 <td class="paramtype">char *&#160;</td>
15994 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
15995 </tr>
15996 <tr>
15997 <td class="paramkey"></td>
15998 <td></td>
15999 <td class="paramtype">size_t&#160;</td>
16000 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16001 </tr>
16002 <tr>
16003 <td></td>
16004 <td>)</td>
16005 <td></td><td></td>
16006 </tr>
16007 </table>
16008</div><div class="memdoc">
16009
16010<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16011
16012<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00190">190</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16013
16014<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16015<div class="fragment"><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;{</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a8b96de58aae24091d0ad761f27360630">IsDebugSupported</a>, input, output);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a8b96de58aae24091d0ad761f27360630"><div class="ttname"><a href="namespacearmnn.xhtml#a8b96de58aae24091d0ad761f27360630">armnn::IsDebugSupported</a></div><div class="ttdeci">bool IsDebugSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00190">LayerSupport.cpp:190</a></div></div>
16016<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16017</div><!-- fragment -->
16018</div>
16019</div>
16020<a id="a399d38872500c6ac84ae031673176ef3"></a>
16021<h2 class="memtitle"><span class="permalink"><a href="#a399d38872500c6ac84ae031673176ef3">&#9670;&nbsp;</a></span>IsDepthwiseConvolutionSupported()</h2>
16022
16023<div class="memitem">
16024<div class="memproto">
16025 <table class="memname">
16026 <tr>
16027 <td class="memname">bool IsDepthwiseConvolutionSupported </td>
16028 <td>(</td>
16029 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16030 <td class="paramname"><em>backend</em>, </td>
16031 </tr>
16032 <tr>
16033 <td class="paramkey"></td>
16034 <td></td>
16035 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16036 <td class="paramname"><em>input</em>, </td>
16037 </tr>
16038 <tr>
16039 <td class="paramkey"></td>
16040 <td></td>
16041 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16042 <td class="paramname"><em>output</em>, </td>
16043 </tr>
16044 <tr>
16045 <td class="paramkey"></td>
16046 <td></td>
16047 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
16048 <td class="paramname"><em>descriptor</em>, </td>
16049 </tr>
16050 <tr>
16051 <td class="paramkey"></td>
16052 <td></td>
16053 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16054 <td class="paramname"><em>weights</em>, </td>
16055 </tr>
16056 <tr>
16057 <td class="paramkey"></td>
16058 <td></td>
16059 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
16060 <td class="paramname"><em>biases</em>, </td>
16061 </tr>
16062 <tr>
16063 <td class="paramkey"></td>
16064 <td></td>
16065 <td class="paramtype">char *&#160;</td>
16066 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16067 </tr>
16068 <tr>
16069 <td class="paramkey"></td>
16070 <td></td>
16071 <td class="paramtype">size_t&#160;</td>
16072 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16073 </tr>
16074 <tr>
16075 <td></td>
16076 <td>)</td>
16077 <td></td><td></td>
16078 </tr>
16079 </table>
16080</div><div class="memdoc">
16081
16082<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16083
16084<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00199">199</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16085
16086<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00486">DepthwiseConvolution2dDescriptor::m_DilationX</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00488">DepthwiseConvolution2dDescriptor::m_DilationY</a>.</p>
16087
16088<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00693">RefLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
16089<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (descriptor.m_DilationX == 1 &amp;&amp; descriptor.m_DilationY == 1)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// Pre 19.05 ArmNN did not have the dilation parameters.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// This version of IsDepthwiseConvolutionSupported is called for backwards-compatibility</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="namespacearmnn.xhtml#a399d38872500c6ac84ae031673176ef3">IsDepthwiseConvolutionSupported</a>,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; input,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; output,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; descriptor,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; weights,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; biases);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; IsDilatedDepthwiseConvolutionSupported,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; input,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; output,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; descriptor,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; weights,</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; biases);</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;}</div><div class="ttc" id="namespacearmnn_xhtml_a399d38872500c6ac84ae031673176ef3"><div class="ttname"><a href="namespacearmnn.xhtml#a399d38872500c6ac84ae031673176ef3">armnn::IsDepthwiseConvolutionSupported</a></div><div class="ttdeci">bool IsDepthwiseConvolutionSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const DepthwiseConvolution2dDescriptor &amp;descriptor, const TensorInfo &amp;weights, const Optional&lt; TensorInfo &gt; &amp;biases, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00199">LayerSupport.cpp:199</a></div></div>
16090<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16091</div><!-- fragment -->
16092</div>
16093</div>
16094<a id="ac92dceabfbc1e46fe74f699f733886a8"></a>
16095<h2 class="memtitle"><span class="permalink"><a href="#ac92dceabfbc1e46fe74f699f733886a8">&#9670;&nbsp;</a></span>IsDequantizeSupported()</h2>
16096
16097<div class="memitem">
16098<div class="memproto">
16099 <table class="memname">
16100 <tr>
16101 <td class="memname">bool IsDequantizeSupported </td>
16102 <td>(</td>
16103 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16104 <td class="paramname"><em>backend</em>, </td>
16105 </tr>
16106 <tr>
16107 <td class="paramkey"></td>
16108 <td></td>
16109 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16110 <td class="paramname"><em>input</em>, </td>
16111 </tr>
16112 <tr>
16113 <td class="paramkey"></td>
16114 <td></td>
16115 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16116 <td class="paramname"><em>output</em>, </td>
16117 </tr>
16118 <tr>
16119 <td class="paramkey"></td>
16120 <td></td>
16121 <td class="paramtype">char *&#160;</td>
16122 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16123 </tr>
16124 <tr>
16125 <td class="paramkey"></td>
16126 <td></td>
16127 <td class="paramtype">size_t&#160;</td>
16128 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16129 </tr>
16130 <tr>
16131 <td></td>
16132 <td>)</td>
16133 <td></td><td></td>
16134 </tr>
16135 </table>
16136</div><div class="memdoc">
16137
16138<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16139
16140<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00232">232</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16141
16142<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#aa9da770c93f812b264861f98cfdd650c">IsDetectionPostProcessSupported()</a>.</p>
16143<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#ac92dceabfbc1e46fe74f699f733886a8">IsDequantizeSupported</a>, input, output);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac92dceabfbc1e46fe74f699f733886a8"><div class="ttname"><a href="namespacearmnn.xhtml#ac92dceabfbc1e46fe74f699f733886a8">armnn::IsDequantizeSupported</a></div><div class="ttdeci">bool IsDequantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00232">LayerSupport.cpp:232</a></div></div>
16144<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16145</div><!-- fragment -->
16146</div>
16147</div>
16148<a id="aa9da770c93f812b264861f98cfdd650c"></a>
16149<h2 class="memtitle"><span class="permalink"><a href="#aa9da770c93f812b264861f98cfdd650c">&#9670;&nbsp;</a></span>IsDetectionPostProcessSupported()</h2>
16150
16151<div class="memitem">
16152<div class="memproto">
16153 <table class="memname">
16154 <tr>
16155 <td class="memname">bool armnn::IsDetectionPostProcessSupported </td>
16156 <td>(</td>
16157 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16158 <td class="paramname"><em>backend</em>, </td>
16159 </tr>
16160 <tr>
16161 <td class="paramkey"></td>
16162 <td></td>
16163 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16164 <td class="paramname"><em>input0</em>, </td>
16165 </tr>
16166 <tr>
16167 <td class="paramkey"></td>
16168 <td></td>
16169 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16170 <td class="paramname"><em>input1</em>, </td>
16171 </tr>
16172 <tr>
16173 <td class="paramkey"></td>
16174 <td></td>
16175 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
16176 <td class="paramname"><em>descriptor</em>, </td>
16177 </tr>
16178 <tr>
16179 <td class="paramkey"></td>
16180 <td></td>
16181 <td class="paramtype">char *&#160;</td>
16182 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
16183 </tr>
16184 <tr>
16185 <td class="paramkey"></td>
16186 <td></td>
16187 <td class="paramtype">size_t&#160;</td>
16188 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
16189 </tr>
16190 <tr>
16191 <td></td>
16192 <td>)</td>
16193 <td></td><td></td>
16194 </tr>
16195 </table>
16196</div><div class="memdoc">
16197
16198<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00232">IsDequantizeSupported()</a>.</p>
16199
16200</div>
16201</div>
16202<a id="a29b4b6b364a31632597970d0bad3d78f"></a>
16203<h2 class="memtitle"><span class="permalink"><a href="#a29b4b6b364a31632597970d0bad3d78f">&#9670;&nbsp;</a></span>IsDivisionSupported()</h2>
16204
16205<div class="memitem">
16206<div class="memproto">
16207 <table class="memname">
16208 <tr>
16209 <td class="memname">bool IsDivisionSupported </td>
16210 <td>(</td>
16211 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16212 <td class="paramname"><em>backend</em>, </td>
16213 </tr>
16214 <tr>
16215 <td class="paramkey"></td>
16216 <td></td>
16217 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16218 <td class="paramname"><em>input0</em>, </td>
16219 </tr>
16220 <tr>
16221 <td class="paramkey"></td>
16222 <td></td>
16223 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16224 <td class="paramname"><em>input1</em>, </td>
16225 </tr>
16226 <tr>
16227 <td class="paramkey"></td>
16228 <td></td>
16229 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16230 <td class="paramname"><em>output</em>, </td>
16231 </tr>
16232 <tr>
16233 <td class="paramkey"></td>
16234 <td></td>
16235 <td class="paramtype">char *&#160;</td>
16236 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16237 </tr>
16238 <tr>
16239 <td class="paramkey"></td>
16240 <td></td>
16241 <td class="paramtype">size_t&#160;</td>
16242 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16243 </tr>
16244 <tr>
16245 <td></td>
16246 <td>)</td>
16247 <td></td><td></td>
16248 </tr>
16249 </table>
16250</div><div class="memdoc">
16251
16252<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16253
16254<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00248">248</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16255
16256<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16257<div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;{</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a29b4b6b364a31632597970d0bad3d78f">IsDivisionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a29b4b6b364a31632597970d0bad3d78f"><div class="ttname"><a href="namespacearmnn.xhtml#a29b4b6b364a31632597970d0bad3d78f">armnn::IsDivisionSupported</a></div><div class="ttdeci">bool IsDivisionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00248">LayerSupport.cpp:248</a></div></div>
16258<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16259</div><!-- fragment -->
16260</div>
16261</div>
16262<a id="a0e3cdea6143299b258a9c34b596bad4d"></a>
16263<h2 class="memtitle"><span class="permalink"><a href="#a0e3cdea6143299b258a9c34b596bad4d">&#9670;&nbsp;</a></span>IsEqualSupported()</h2>
16264
16265<div class="memitem">
16266<div class="memproto">
16267 <table class="memname">
16268 <tr>
16269 <td class="memname">bool IsEqualSupported </td>
16270 <td>(</td>
16271 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16272 <td class="paramname"><em>backend</em>, </td>
16273 </tr>
16274 <tr>
16275 <td class="paramkey"></td>
16276 <td></td>
16277 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16278 <td class="paramname"><em>input0</em>, </td>
16279 </tr>
16280 <tr>
16281 <td class="paramkey"></td>
16282 <td></td>
16283 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16284 <td class="paramname"><em>input1</em>, </td>
16285 </tr>
16286 <tr>
16287 <td class="paramkey"></td>
16288 <td></td>
16289 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16290 <td class="paramname"><em>output</em>, </td>
16291 </tr>
16292 <tr>
16293 <td class="paramkey"></td>
16294 <td></td>
16295 <td class="paramtype">char *&#160;</td>
16296 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16297 </tr>
16298 <tr>
16299 <td class="paramkey"></td>
16300 <td></td>
16301 <td class="paramtype">size_t&#160;</td>
16302 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16303 </tr>
16304 <tr>
16305 <td></td>
16306 <td>)</td>
16307 <td></td><td></td>
16308 </tr>
16309 </table>
16310</div><div class="memdoc">
16311
16312<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16313
16314<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00258">258</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16315
16316<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16317<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; input0,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; input1,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; output,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; ComparisonDescriptor(ComparisonOperation::Equal));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16318</div><!-- fragment -->
16319</div>
16320</div>
16321<a id="afe39427f8974f064b838df5c7f0ebebc"></a>
16322<h2 class="memtitle"><span class="permalink"><a href="#afe39427f8974f064b838df5c7f0ebebc">&#9670;&nbsp;</a></span>IsFakeQuantizationSupported()</h2>
16323
16324<div class="memitem">
16325<div class="memproto">
16326 <table class="memname">
16327 <tr>
16328 <td class="memname">bool IsFakeQuantizationSupported </td>
16329 <td>(</td>
16330 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16331 <td class="paramname"><em>backend</em>, </td>
16332 </tr>
16333 <tr>
16334 <td class="paramkey"></td>
16335 <td></td>
16336 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16337 <td class="paramname"><em>input</em>, </td>
16338 </tr>
16339 <tr>
16340 <td class="paramkey"></td>
16341 <td></td>
16342 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.xhtml">FakeQuantizationDescriptor</a> &amp;&#160;</td>
16343 <td class="paramname"><em>descriptor</em>, </td>
16344 </tr>
16345 <tr>
16346 <td class="paramkey"></td>
16347 <td></td>
16348 <td class="paramtype">char *&#160;</td>
16349 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16350 </tr>
16351 <tr>
16352 <td class="paramkey"></td>
16353 <td></td>
16354 <td class="paramtype">size_t&#160;</td>
16355 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16356 </tr>
16357 <tr>
16358 <td></td>
16359 <td>)</td>
16360 <td></td><td></td>
16361 </tr>
16362 </table>
16363</div><div class="memdoc">
16364
16365<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16366
16367<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00273">273</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16368
16369<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16370<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#afe39427f8974f064b838df5c7f0ebebc">IsFakeQuantizationSupported</a>, input, descriptor);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16371<div class="ttc" id="namespacearmnn_xhtml_afe39427f8974f064b838df5c7f0ebebc"><div class="ttname"><a href="namespacearmnn.xhtml#afe39427f8974f064b838df5c7f0ebebc">armnn::IsFakeQuantizationSupported</a></div><div class="ttdeci">bool IsFakeQuantizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const FakeQuantizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00273">LayerSupport.cpp:273</a></div></div>
16372</div><!-- fragment -->
16373</div>
16374</div>
16375<a id="ad78d822be14a8d585cd038cf0e73cd7e"></a>
16376<h2 class="memtitle"><span class="permalink"><a href="#ad78d822be14a8d585cd038cf0e73cd7e">&#9670;&nbsp;</a></span>IsFloat16()</h2>
16377
16378<div class="memitem">
16379<div class="memproto">
16380 <table class="memname">
16381 <tr>
16382 <td class="memname">bool armnn::IsFloat16 </td>
16383 <td>(</td>
16384 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
16385 <td class="paramname"><em>info</em></td><td>)</td>
16386 <td></td>
16387 </tr>
16388 </table>
16389</div><div class="memdoc">
16390
16391<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00058">58</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
16392
16393<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
16394
16395<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00442">RefWorkloadFactory::CreatePad()</a>.</p>
16396<div class="fragment"><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; <span class="keywordflow">return</span> IsDataType&lt;DataType::Float16&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
16397</div><!-- fragment -->
16398</div>
16399</div>
16400<a id="a89e9c52419c572f05bf9737a7a60b267"></a>
16401<h2 class="memtitle"><span class="permalink"><a href="#a89e9c52419c572f05bf9737a7a60b267">&#9670;&nbsp;</a></span>IsFloorSupported()</h2>
16402
16403<div class="memitem">
16404<div class="memproto">
16405 <table class="memname">
16406 <tr>
16407 <td class="memname">bool IsFloorSupported </td>
16408 <td>(</td>
16409 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16410 <td class="paramname"><em>backend</em>, </td>
16411 </tr>
16412 <tr>
16413 <td class="paramkey"></td>
16414 <td></td>
16415 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16416 <td class="paramname"><em>input</em>, </td>
16417 </tr>
16418 <tr>
16419 <td class="paramkey"></td>
16420 <td></td>
16421 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16422 <td class="paramname"><em>output</em>, </td>
16423 </tr>
16424 <tr>
16425 <td class="paramkey"></td>
16426 <td></td>
16427 <td class="paramtype">char *&#160;</td>
16428 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16429 </tr>
16430 <tr>
16431 <td class="paramkey"></td>
16432 <td></td>
16433 <td class="paramtype">size_t&#160;</td>
16434 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16435 </tr>
16436 <tr>
16437 <td></td>
16438 <td>)</td>
16439 <td></td><td></td>
16440 </tr>
16441 </table>
16442</div><div class="memdoc">
16443
16444<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16445
16446<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00282">282</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16447
16448<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>.</p>
16449<div class="fragment"><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;{</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// By definition (that is, regardless of compute device), shapes and data type must match.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span> (input.GetShape() != output.GetShape() || input.GetDataType() != output.GetDataType())</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a89e9c52419c572f05bf9737a7a60b267">IsFloorSupported</a>, input, output);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16450<div class="ttc" id="namespacearmnn_xhtml_a89e9c52419c572f05bf9737a7a60b267"><div class="ttname"><a href="namespacearmnn.xhtml#a89e9c52419c572f05bf9737a7a60b267">armnn::IsFloorSupported</a></div><div class="ttdeci">bool IsFloorSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00282">LayerSupport.cpp:282</a></div></div>
16451</div><!-- fragment -->
16452</div>
16453</div>
16454<a id="aa2f4e75d4a4f61b24de0dfe150952c80"></a>
16455<h2 class="memtitle"><span class="permalink"><a href="#aa2f4e75d4a4f61b24de0dfe150952c80">&#9670;&nbsp;</a></span>IsFullyConnectedSupported()</h2>
16456
16457<div class="memitem">
16458<div class="memproto">
16459 <table class="memname">
16460 <tr>
16461 <td class="memname">bool IsFullyConnectedSupported </td>
16462 <td>(</td>
16463 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16464 <td class="paramname"><em>backend</em>, </td>
16465 </tr>
16466 <tr>
16467 <td class="paramkey"></td>
16468 <td></td>
16469 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16470 <td class="paramname"><em>input</em>, </td>
16471 </tr>
16472 <tr>
16473 <td class="paramkey"></td>
16474 <td></td>
16475 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16476 <td class="paramname"><em>output</em>, </td>
16477 </tr>
16478 <tr>
16479 <td class="paramkey"></td>
16480 <td></td>
16481 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16482 <td class="paramname"><em>weights</em>, </td>
16483 </tr>
16484 <tr>
16485 <td class="paramkey"></td>
16486 <td></td>
16487 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16488 <td class="paramname"><em>biases</em>, </td>
16489 </tr>
16490 <tr>
16491 <td class="paramkey"></td>
16492 <td></td>
16493 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
16494 <td class="paramname"><em>descriptor</em>, </td>
16495 </tr>
16496 <tr>
16497 <td class="paramkey"></td>
16498 <td></td>
16499 <td class="paramtype">char *&#160;</td>
16500 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16501 </tr>
16502 <tr>
16503 <td class="paramkey"></td>
16504 <td></td>
16505 <td class="paramtype">size_t&#160;</td>
16506 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16507 </tr>
16508 <tr>
16509 <td></td>
16510 <td>)</td>
16511 <td></td><td></td>
16512 </tr>
16513 </table>
16514</div><div class="memdoc">
16515
16516<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16517
16518<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00296">296</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16519
16520<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16521<div class="fragment"><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;{</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aa2f4e75d4a4f61b24de0dfe150952c80">IsFullyConnectedSupported</a>, input, output, weights, biases, descriptor);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aa2f4e75d4a4f61b24de0dfe150952c80"><div class="ttname"><a href="namespacearmnn.xhtml#aa2f4e75d4a4f61b24de0dfe150952c80">armnn::IsFullyConnectedSupported</a></div><div class="ttdeci">bool IsFullyConnectedSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const TensorInfo &amp;weights, const TensorInfo &amp;biases, const FullyConnectedDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00296">LayerSupport.cpp:296</a></div></div>
16522<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16523</div><!-- fragment -->
16524</div>
16525</div>
16526<a id="a658eea4e746b1e664796c48d7eaf19f0"></a>
16527<h2 class="memtitle"><span class="permalink"><a href="#a658eea4e746b1e664796c48d7eaf19f0">&#9670;&nbsp;</a></span>IsGatherSupported()</h2>
16528
16529<div class="memitem">
16530<div class="memproto">
16531 <table class="memname">
16532 <tr>
16533 <td class="memname">bool armnn::IsGatherSupported </td>
16534 <td>(</td>
16535 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16536 <td class="paramname"><em>backend</em>, </td>
16537 </tr>
16538 <tr>
16539 <td class="paramkey"></td>
16540 <td></td>
16541 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16542 <td class="paramname"><em>input0</em>, </td>
16543 </tr>
16544 <tr>
16545 <td class="paramkey"></td>
16546 <td></td>
16547 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16548 <td class="paramname"><em>input1</em>, </td>
16549 </tr>
16550 <tr>
16551 <td class="paramkey"></td>
16552 <td></td>
16553 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16554 <td class="paramname"><em>output</em>, </td>
16555 </tr>
16556 <tr>
16557 <td class="paramkey"></td>
16558 <td></td>
16559 <td class="paramtype">char *&#160;</td>
16560 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
16561 </tr>
16562 <tr>
16563 <td class="paramkey"></td>
16564 <td></td>
16565 <td class="paramtype">size_t&#160;</td>
16566 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
16567 </tr>
16568 <tr>
16569 <td></td>
16570 <td>)</td>
16571 <td></td><td></td>
16572 </tr>
16573 </table>
16574</div><div class="memdoc">
16575
16576<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00308">308</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16577
16578<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16579<div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a658eea4e746b1e664796c48d7eaf19f0">IsGatherSupported</a>, input0, input1, output);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16580<div class="ttc" id="namespacearmnn_xhtml_a658eea4e746b1e664796c48d7eaf19f0"><div class="ttname"><a href="namespacearmnn.xhtml#a658eea4e746b1e664796c48d7eaf19f0">armnn::IsGatherSupported</a></div><div class="ttdeci">bool IsGatherSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00308">LayerSupport.cpp:308</a></div></div>
16581</div><!-- fragment -->
16582</div>
16583</div>
16584<a id="adffa596b4bdecd54ca460853cd1439e2"></a>
16585<h2 class="memtitle"><span class="permalink"><a href="#adffa596b4bdecd54ca460853cd1439e2">&#9670;&nbsp;</a></span>IsGreaterSupported()</h2>
16586
16587<div class="memitem">
16588<div class="memproto">
16589 <table class="memname">
16590 <tr>
16591 <td class="memname">bool IsGreaterSupported </td>
16592 <td>(</td>
16593 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16594 <td class="paramname"><em>backend</em>, </td>
16595 </tr>
16596 <tr>
16597 <td class="paramkey"></td>
16598 <td></td>
16599 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16600 <td class="paramname"><em>input0</em>, </td>
16601 </tr>
16602 <tr>
16603 <td class="paramkey"></td>
16604 <td></td>
16605 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16606 <td class="paramname"><em>input1</em>, </td>
16607 </tr>
16608 <tr>
16609 <td class="paramkey"></td>
16610 <td></td>
16611 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16612 <td class="paramname"><em>output</em>, </td>
16613 </tr>
16614 <tr>
16615 <td class="paramkey"></td>
16616 <td></td>
16617 <td class="paramtype">char *&#160;</td>
16618 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16619 </tr>
16620 <tr>
16621 <td class="paramkey"></td>
16622 <td></td>
16623 <td class="paramtype">size_t&#160;</td>
16624 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16625 </tr>
16626 <tr>
16627 <td></td>
16628 <td>)</td>
16629 <td></td><td></td>
16630 </tr>
16631 </table>
16632</div><div class="memdoc">
16633
16634<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16635
16636<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00318">318</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16637
16638<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a>.</p>
16639<div class="fragment"><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; IsComparisonSupported,</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; input0,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; input1,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; output,</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; ComparisonDescriptor(ComparisonOperation::Greater));</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16640</div><!-- fragment -->
16641</div>
16642</div>
16643<a id="a197a353aa963497d29a07796268ea5c1"></a>
16644<h2 class="memtitle"><span class="permalink"><a href="#a197a353aa963497d29a07796268ea5c1">&#9670;&nbsp;</a></span>IsInputSupported()</h2>
16645
16646<div class="memitem">
16647<div class="memproto">
16648 <table class="memname">
16649 <tr>
16650 <td class="memname">bool IsInputSupported </td>
16651 <td>(</td>
16652 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16653 <td class="paramname"><em>backend</em>, </td>
16654 </tr>
16655 <tr>
16656 <td class="paramkey"></td>
16657 <td></td>
16658 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16659 <td class="paramname"><em>input</em>, </td>
16660 </tr>
16661 <tr>
16662 <td class="paramkey"></td>
16663 <td></td>
16664 <td class="paramtype">char *&#160;</td>
16665 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16666 </tr>
16667 <tr>
16668 <td class="paramkey"></td>
16669 <td></td>
16670 <td class="paramtype">size_t&#160;</td>
16671 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16672 </tr>
16673 <tr>
16674 <td></td>
16675 <td>)</td>
16676 <td></td><td></td>
16677 </tr>
16678 </table>
16679</div><div class="memdoc">
16680
16681<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16682
16683<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00333">333</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16684
16685<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16686
16687<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
16688<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a197a353aa963497d29a07796268ea5c1">IsInputSupported</a>, input);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16689<div class="ttc" id="namespacearmnn_xhtml_a197a353aa963497d29a07796268ea5c1"><div class="ttname"><a href="namespacearmnn.xhtml#a197a353aa963497d29a07796268ea5c1">armnn::IsInputSupported</a></div><div class="ttdeci">bool IsInputSupported(const BackendId &amp;backend, const TensorInfo &amp;input, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00333">LayerSupport.cpp:333</a></div></div>
16690</div><!-- fragment -->
16691</div>
16692</div>
16693<a id="a0906736b90464c0eb3ce5a87e05ebeee"></a>
16694<h2 class="memtitle"><span class="permalink"><a href="#a0906736b90464c0eb3ce5a87e05ebeee">&#9670;&nbsp;</a></span>IsL2NormalizationSupported()</h2>
16695
16696<div class="memitem">
16697<div class="memproto">
16698 <table class="memname">
16699 <tr>
16700 <td class="memname">bool IsL2NormalizationSupported </td>
16701 <td>(</td>
16702 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16703 <td class="paramname"><em>backend</em>, </td>
16704 </tr>
16705 <tr>
16706 <td class="paramkey"></td>
16707 <td></td>
16708 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16709 <td class="paramname"><em>input</em>, </td>
16710 </tr>
16711 <tr>
16712 <td class="paramkey"></td>
16713 <td></td>
16714 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16715 <td class="paramname"><em>output</em>, </td>
16716 </tr>
16717 <tr>
16718 <td class="paramkey"></td>
16719 <td></td>
16720 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
16721 <td class="paramname"><em>descriptor</em>, </td>
16722 </tr>
16723 <tr>
16724 <td class="paramkey"></td>
16725 <td></td>
16726 <td class="paramtype">char *&#160;</td>
16727 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16728 </tr>
16729 <tr>
16730 <td class="paramkey"></td>
16731 <td></td>
16732 <td class="paramtype">size_t&#160;</td>
16733 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16734 </tr>
16735 <tr>
16736 <td></td>
16737 <td>)</td>
16738 <td></td><td></td>
16739 </tr>
16740 </table>
16741</div><div class="memdoc">
16742
16743<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16744
16745<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00342">342</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16746
16747<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16748<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a0906736b90464c0eb3ce5a87e05ebeee">IsL2NormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a0906736b90464c0eb3ce5a87e05ebeee"><div class="ttname"><a href="namespacearmnn.xhtml#a0906736b90464c0eb3ce5a87e05ebeee">armnn::IsL2NormalizationSupported</a></div><div class="ttdeci">bool IsL2NormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const L2NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00342">LayerSupport.cpp:342</a></div></div>
16749<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16750</div><!-- fragment -->
16751</div>
16752</div>
16753<a id="a3e8b3af7771ffb37ede50aa2d9cc3af6"></a>
16754<h2 class="memtitle"><span class="permalink"><a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">&#9670;&nbsp;</a></span>IsLstmSupported()</h2>
16755
16756<div class="memitem">
16757<div class="memproto">
16758 <table class="memname">
16759 <tr>
16760 <td class="memname">bool IsLstmSupported </td>
16761 <td>(</td>
16762 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16763 <td class="paramname"><em>backend</em>, </td>
16764 </tr>
16765 <tr>
16766 <td class="paramkey"></td>
16767 <td></td>
16768 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16769 <td class="paramname"><em>input</em>, </td>
16770 </tr>
16771 <tr>
16772 <td class="paramkey"></td>
16773 <td></td>
16774 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16775 <td class="paramname"><em>outputStateIn</em>, </td>
16776 </tr>
16777 <tr>
16778 <td class="paramkey"></td>
16779 <td></td>
16780 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16781 <td class="paramname"><em>cellStateIn</em>, </td>
16782 </tr>
16783 <tr>
16784 <td class="paramkey"></td>
16785 <td></td>
16786 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16787 <td class="paramname"><em>scratchBuffer</em>, </td>
16788 </tr>
16789 <tr>
16790 <td class="paramkey"></td>
16791 <td></td>
16792 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16793 <td class="paramname"><em>outputStateOut</em>, </td>
16794 </tr>
16795 <tr>
16796 <td class="paramkey"></td>
16797 <td></td>
16798 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16799 <td class="paramname"><em>cellStateOut</em>, </td>
16800 </tr>
16801 <tr>
16802 <td class="paramkey"></td>
16803 <td></td>
16804 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16805 <td class="paramname"><em>output</em>, </td>
16806 </tr>
16807 <tr>
16808 <td class="paramkey"></td>
16809 <td></td>
16810 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
16811 <td class="paramname"><em>descriptor</em>, </td>
16812 </tr>
16813 <tr>
16814 <td class="paramkey"></td>
16815 <td></td>
16816 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
16817 <td class="paramname"><em>paramsInfo</em>, </td>
16818 </tr>
16819 <tr>
16820 <td class="paramkey"></td>
16821 <td></td>
16822 <td class="paramtype">char *&#160;</td>
16823 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16824 </tr>
16825 <tr>
16826 <td class="paramkey"></td>
16827 <td></td>
16828 <td class="paramtype">size_t&#160;</td>
16829 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16830 </tr>
16831 <tr>
16832 <td></td>
16833 <td>)</td>
16834 <td></td><td></td>
16835 </tr>
16836 </table>
16837</div><div class="memdoc">
16838
16839<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16840
16841<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00352">352</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16842
16843<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16844<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a3e8b3af7771ffb37ede50aa2d9cc3af6">IsLstmSupported</a>, input, outputStateIn, cellStateIn,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; scratchBuffer, outputStateOut, cellStateOut,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; output, descriptor, paramsInfo);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16845<div class="ttc" id="namespacearmnn_xhtml_a3e8b3af7771ffb37ede50aa2d9cc3af6"><div class="ttname"><a href="namespacearmnn.xhtml#a3e8b3af7771ffb37ede50aa2d9cc3af6">armnn::IsLstmSupported</a></div><div class="ttdeci">bool IsLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;outputStateIn, const TensorInfo &amp;cellStateIn, const TensorInfo &amp;scratchBuffer, const TensorInfo &amp;outputStateOut, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const LstmDescriptor &amp;descriptor, const LstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00352">LayerSupport.cpp:352</a></div></div>
16846</div><!-- fragment -->
16847</div>
16848</div>
16849<a id="a3b85a270baf98ea6b040bd395c2d700a"></a>
16850<h2 class="memtitle"><span class="permalink"><a href="#a3b85a270baf98ea6b040bd395c2d700a">&#9670;&nbsp;</a></span>IsMaximumSupported()</h2>
16851
16852<div class="memitem">
16853<div class="memproto">
16854 <table class="memname">
16855 <tr>
16856 <td class="memname">bool IsMaximumSupported </td>
16857 <td>(</td>
16858 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16859 <td class="paramname"><em>backend</em>, </td>
16860 </tr>
16861 <tr>
16862 <td class="paramkey"></td>
16863 <td></td>
16864 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16865 <td class="paramname"><em>input0</em>, </td>
16866 </tr>
16867 <tr>
16868 <td class="paramkey"></td>
16869 <td></td>
16870 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16871 <td class="paramname"><em>input1</em>, </td>
16872 </tr>
16873 <tr>
16874 <td class="paramkey"></td>
16875 <td></td>
16876 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16877 <td class="paramname"><em>output</em>, </td>
16878 </tr>
16879 <tr>
16880 <td class="paramkey"></td>
16881 <td></td>
16882 <td class="paramtype">char *&#160;</td>
16883 <td class="paramname"><em>reasonIfUnSupported</em> = <code>nullptr</code>, </td>
16884 </tr>
16885 <tr>
16886 <td class="paramkey"></td>
16887 <td></td>
16888 <td class="paramtype">size_t&#160;</td>
16889 <td class="paramname"><em>reasonIfUnSupportedMaxLength</em> = <code>0</code>&#160;</td>
16890 </tr>
16891 <tr>
16892 <td></td>
16893 <td>)</td>
16894 <td></td><td></td>
16895 </tr>
16896 </table>
16897</div><div class="memdoc">
16898
16899<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16900
16901<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00365">365</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16902
16903<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16904<div class="fragment"><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;{</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a3b85a270baf98ea6b040bd395c2d700a">IsMaximumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16905<div class="ttc" id="namespacearmnn_xhtml_a3b85a270baf98ea6b040bd395c2d700a"><div class="ttname"><a href="namespacearmnn.xhtml#a3b85a270baf98ea6b040bd395c2d700a">armnn::IsMaximumSupported</a></div><div class="ttdeci">bool IsMaximumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnSupported=nullptr, size_t reasonIfUnSupportedMaxLength=0)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00365">LayerSupport.cpp:365</a></div></div>
16906</div><!-- fragment -->
16907</div>
16908</div>
16909<a id="a0cdc60b4988b2193b97590e35f34a07e"></a>
16910<h2 class="memtitle"><span class="permalink"><a href="#a0cdc60b4988b2193b97590e35f34a07e">&#9670;&nbsp;</a></span>IsMeanSupported()</h2>
16911
16912<div class="memitem">
16913<div class="memproto">
16914 <table class="memname">
16915 <tr>
16916 <td class="memname">bool IsMeanSupported </td>
16917 <td>(</td>
16918 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16919 <td class="paramname"><em>backend</em>, </td>
16920 </tr>
16921 <tr>
16922 <td class="paramkey"></td>
16923 <td></td>
16924 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16925 <td class="paramname"><em>input</em>, </td>
16926 </tr>
16927 <tr>
16928 <td class="paramkey"></td>
16929 <td></td>
16930 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16931 <td class="paramname"><em>output</em>, </td>
16932 </tr>
16933 <tr>
16934 <td class="paramkey"></td>
16935 <td></td>
16936 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
16937 <td class="paramname"><em>descriptor</em>, </td>
16938 </tr>
16939 <tr>
16940 <td class="paramkey"></td>
16941 <td></td>
16942 <td class="paramtype">char *&#160;</td>
16943 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16944 </tr>
16945 <tr>
16946 <td class="paramkey"></td>
16947 <td></td>
16948 <td class="paramtype">size_t&#160;</td>
16949 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
16950 </tr>
16951 <tr>
16952 <td></td>
16953 <td>)</td>
16954 <td></td><td></td>
16955 </tr>
16956 </table>
16957</div><div class="memdoc">
16958
16959<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
16960
16961<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00375">375</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
16962
16963<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
16964<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a0cdc60b4988b2193b97590e35f34a07e">IsMeanSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a0cdc60b4988b2193b97590e35f34a07e"><div class="ttname"><a href="namespacearmnn.xhtml#a0cdc60b4988b2193b97590e35f34a07e">armnn::IsMeanSupported</a></div><div class="ttdeci">bool IsMeanSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const MeanDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00375">LayerSupport.cpp:375</a></div></div>
16965<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
16966</div><!-- fragment -->
16967</div>
16968</div>
16969<a id="a87ac712443e46c0deb38ab0eaf637e70"></a>
16970<h2 class="memtitle"><span class="permalink"><a href="#a87ac712443e46c0deb38ab0eaf637e70">&#9670;&nbsp;</a></span>IsMemCopySupported()</h2>
16971
16972<div class="memitem">
16973<div class="memproto">
16974 <table class="memname">
16975 <tr>
16976 <td class="memname">bool IsMemCopySupported </td>
16977 <td>(</td>
16978 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
16979 <td class="paramname"><em>backend</em>, </td>
16980 </tr>
16981 <tr>
16982 <td class="paramkey"></td>
16983 <td></td>
16984 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16985 <td class="paramname"><em>input</em>, </td>
16986 </tr>
16987 <tr>
16988 <td class="paramkey"></td>
16989 <td></td>
16990 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
16991 <td class="paramname"><em>output</em>, </td>
16992 </tr>
16993 <tr>
16994 <td class="paramkey"></td>
16995 <td></td>
16996 <td class="paramtype">char *&#160;</td>
16997 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
16998 </tr>
16999 <tr>
17000 <td class="paramkey"></td>
17001 <td></td>
17002 <td class="paramtype">size_t&#160;</td>
17003 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17004 </tr>
17005 <tr>
17006 <td></td>
17007 <td>)</td>
17008 <td></td><td></td>
17009 </tr>
17010 </table>
17011</div><div class="memdoc">
17012
17013<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17014
17015<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00385">385</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17016
17017<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17018<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a87ac712443e46c0deb38ab0eaf637e70">IsMemCopySupported</a>, input, output);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17019<div class="ttc" id="namespacearmnn_xhtml_a87ac712443e46c0deb38ab0eaf637e70"><div class="ttname"><a href="namespacearmnn.xhtml#a87ac712443e46c0deb38ab0eaf637e70">armnn::IsMemCopySupported</a></div><div class="ttdeci">bool IsMemCopySupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00385">LayerSupport.cpp:385</a></div></div>
17020</div><!-- fragment -->
17021</div>
17022</div>
17023<a id="a99260bf94e4f8d0c8a527970cd52ce93"></a>
17024<h2 class="memtitle"><span class="permalink"><a href="#a99260bf94e4f8d0c8a527970cd52ce93">&#9670;&nbsp;</a></span>IsMemImportSupported()</h2>
17025
17026<div class="memitem">
17027<div class="memproto">
17028 <table class="memname">
17029 <tr>
17030 <td class="memname">bool armnn::IsMemImportSupported </td>
17031 <td>(</td>
17032 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17033 <td class="paramname"><em>backend</em>, </td>
17034 </tr>
17035 <tr>
17036 <td class="paramkey"></td>
17037 <td></td>
17038 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17039 <td class="paramname"><em>input</em>, </td>
17040 </tr>
17041 <tr>
17042 <td class="paramkey"></td>
17043 <td></td>
17044 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17045 <td class="paramname"><em>output</em>, </td>
17046 </tr>
17047 <tr>
17048 <td class="paramkey"></td>
17049 <td></td>
17050 <td class="paramtype">char *&#160;</td>
17051 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
17052 </tr>
17053 <tr>
17054 <td class="paramkey"></td>
17055 <td></td>
17056 <td class="paramtype">size_t&#160;</td>
17057 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
17058 </tr>
17059 <tr>
17060 <td></td>
17061 <td>)</td>
17062 <td></td><td></td>
17063 </tr>
17064 </table>
17065</div><div class="memdoc">
17066
17067<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00394">394</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17068
17069<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17070<div class="fragment"><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;{</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a99260bf94e4f8d0c8a527970cd52ce93">IsMemImportSupported</a>, input, output);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17071<div class="ttc" id="namespacearmnn_xhtml_a99260bf94e4f8d0c8a527970cd52ce93"><div class="ttname"><a href="namespacearmnn.xhtml#a99260bf94e4f8d0c8a527970cd52ce93">armnn::IsMemImportSupported</a></div><div class="ttdeci">bool IsMemImportSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00394">LayerSupport.cpp:394</a></div></div>
17072</div><!-- fragment -->
17073</div>
17074</div>
17075<a id="a6e2c7ec2b8d47bde2bc9fa04bb2091f6"></a>
17076<h2 class="memtitle"><span class="permalink"><a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[1/2]</span></h2>
17077
17078<div class="memitem">
17079<div class="memproto">
17080 <table class="memname">
17081 <tr>
17082 <td class="memname">bool armnn::IsMergerSupported </td>
17083 <td>(</td>
17084 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17085 <td class="paramname"><em>backend</em>, </td>
17086 </tr>
17087 <tr>
17088 <td class="paramkey"></td>
17089 <td></td>
17090 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
17091 <td class="paramname"><em>inputs</em>, </td>
17092 </tr>
17093 <tr>
17094 <td class="paramkey"></td>
17095 <td></td>
17096 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17097 <td class="paramname"><em>output</em>, </td>
17098 </tr>
17099 <tr>
17100 <td class="paramkey"></td>
17101 <td></td>
17102 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
17103 <td class="paramname"><em>descriptor</em>, </td>
17104 </tr>
17105 <tr>
17106 <td class="paramkey"></td>
17107 <td></td>
17108 <td class="paramtype">char *&#160;</td>
17109 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17110 </tr>
17111 <tr>
17112 <td class="paramkey"></td>
17113 <td></td>
17114 <td class="paramtype">size_t&#160;</td>
17115 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17116 </tr>
17117 <tr>
17118 <td></td>
17119 <td>)</td>
17120 <td></td><td></td>
17121 </tr>
17122 </table>
17123</div><div class="memdoc">
17124
17125<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17126
17127<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00414">IsMergerSupported()</a>.</p>
17128
17129</div>
17130</div>
17131<a id="adf5de1faf58e2eea99a932883edc3ed0"></a>
17132<h2 class="memtitle"><span class="permalink"><a href="#adf5de1faf58e2eea99a932883edc3ed0">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[2/2]</span></h2>
17133
17134<div class="memitem">
17135<div class="memproto">
17136 <table class="memname">
17137 <tr>
17138 <td class="memname">bool armnn::IsMergerSupported </td>
17139 <td>(</td>
17140 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17141 <td class="paramname"><em>backend</em>, </td>
17142 </tr>
17143 <tr>
17144 <td class="paramkey"></td>
17145 <td></td>
17146 <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
17147 <td class="paramname"><em>inputs</em>, </td>
17148 </tr>
17149 <tr>
17150 <td class="paramkey"></td>
17151 <td></td>
17152 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17153 <td class="paramname"><em>output</em>, </td>
17154 </tr>
17155 <tr>
17156 <td class="paramkey"></td>
17157 <td></td>
17158 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
17159 <td class="paramname"><em>descriptor</em>, </td>
17160 </tr>
17161 <tr>
17162 <td class="paramkey"></td>
17163 <td></td>
17164 <td class="paramtype">char *&#160;</td>
17165 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
17166 </tr>
17167 <tr>
17168 <td class="paramkey"></td>
17169 <td></td>
17170 <td class="paramtype">size_t&#160;</td>
17171 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
17172 </tr>
17173 <tr>
17174 <td></td>
17175 <td>)</td>
17176 <td></td><td></td>
17177 </tr>
17178 </table>
17179</div><div class="memdoc">
17180
17181<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00414">414</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17182
17183<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">IsMergerSupported()</a>.</p>
17184<div class="fragment"><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; BOOST_ASSERT(inputs.size() &gt; 0);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#adf5de1faf58e2eea99a932883edc3ed0">IsMergerSupported</a>, inputs, output, descriptor);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
17185<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17186<div class="ttc" id="namespacearmnn_xhtml_adf5de1faf58e2eea99a932883edc3ed0"><div class="ttname"><a href="namespacearmnn.xhtml#adf5de1faf58e2eea99a932883edc3ed0">armnn::IsMergerSupported</a></div><div class="ttdeci">bool IsMergerSupported(const BackendId &amp;backend, std::vector&lt; const TensorInfo *&gt; inputs, const TensorInfo &amp;output, const OriginsDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00414">LayerSupport.cpp:414</a></div></div>
17187<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
17188</div><!-- fragment -->
17189</div>
17190</div>
17191<a id="a7f518a73b9f7e41c5584c1f49bca8568"></a>
17192<h2 class="memtitle"><span class="permalink"><a href="#a7f518a73b9f7e41c5584c1f49bca8568">&#9670;&nbsp;</a></span>IsMergeSupported()</h2>
17193
17194<div class="memitem">
17195<div class="memproto">
17196 <table class="memname">
17197 <tr>
17198 <td class="memname">bool IsMergeSupported </td>
17199 <td>(</td>
17200 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17201 <td class="paramname"><em>backend</em>, </td>
17202 </tr>
17203 <tr>
17204 <td class="paramkey"></td>
17205 <td></td>
17206 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17207 <td class="paramname"><em>input0</em>, </td>
17208 </tr>
17209 <tr>
17210 <td class="paramkey"></td>
17211 <td></td>
17212 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17213 <td class="paramname"><em>input1</em>, </td>
17214 </tr>
17215 <tr>
17216 <td class="paramkey"></td>
17217 <td></td>
17218 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17219 <td class="paramname"><em>output</em>, </td>
17220 </tr>
17221 <tr>
17222 <td class="paramkey"></td>
17223 <td></td>
17224 <td class="paramtype">char *&#160;</td>
17225 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17226 </tr>
17227 <tr>
17228 <td class="paramkey"></td>
17229 <td></td>
17230 <td class="paramtype">size_t&#160;</td>
17231 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17232 </tr>
17233 <tr>
17234 <td></td>
17235 <td>)</td>
17236 <td></td><td></td>
17237 </tr>
17238 </table>
17239</div><div class="memdoc">
17240
17241<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17242
17243<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00403">403</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17244
17245<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17246<div class="fragment"><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;{</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a7f518a73b9f7e41c5584c1f49bca8568">IsMergeSupported</a>, input0, input1, output);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17247<div class="ttc" id="namespacearmnn_xhtml_a7f518a73b9f7e41c5584c1f49bca8568"><div class="ttname"><a href="namespacearmnn.xhtml#a7f518a73b9f7e41c5584c1f49bca8568">armnn::IsMergeSupported</a></div><div class="ttdeci">bool IsMergeSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00403">LayerSupport.cpp:403</a></div></div>
17248</div><!-- fragment -->
17249</div>
17250</div>
17251<a id="ab99d3d944b80f47bd1be70f63cc60abb"></a>
17252<h2 class="memtitle"><span class="permalink"><a href="#ab99d3d944b80f47bd1be70f63cc60abb">&#9670;&nbsp;</a></span>IsMinimumSupported()</h2>
17253
17254<div class="memitem">
17255<div class="memproto">
17256 <table class="memname">
17257 <tr>
17258 <td class="memname">bool IsMinimumSupported </td>
17259 <td>(</td>
17260 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17261 <td class="paramname"><em>backend</em>, </td>
17262 </tr>
17263 <tr>
17264 <td class="paramkey"></td>
17265 <td></td>
17266 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17267 <td class="paramname"><em>input0</em>, </td>
17268 </tr>
17269 <tr>
17270 <td class="paramkey"></td>
17271 <td></td>
17272 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17273 <td class="paramname"><em>input1</em>, </td>
17274 </tr>
17275 <tr>
17276 <td class="paramkey"></td>
17277 <td></td>
17278 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17279 <td class="paramname"><em>output</em>, </td>
17280 </tr>
17281 <tr>
17282 <td class="paramkey"></td>
17283 <td></td>
17284 <td class="paramtype">char *&#160;</td>
17285 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17286 </tr>
17287 <tr>
17288 <td class="paramkey"></td>
17289 <td></td>
17290 <td class="paramtype">size_t&#160;</td>
17291 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17292 </tr>
17293 <tr>
17294 <td></td>
17295 <td>)</td>
17296 <td></td><td></td>
17297 </tr>
17298 </table>
17299</div><div class="memdoc">
17300
17301<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17302
17303<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00428">428</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17304
17305<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17306<div class="fragment"><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="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#ab99d3d944b80f47bd1be70f63cc60abb">IsMinimumSupported</a>, input0, input1, output);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17307<div class="ttc" id="namespacearmnn_xhtml_ab99d3d944b80f47bd1be70f63cc60abb"><div class="ttname"><a href="namespacearmnn.xhtml#ab99d3d944b80f47bd1be70f63cc60abb">armnn::IsMinimumSupported</a></div><div class="ttdeci">bool IsMinimumSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00428">LayerSupport.cpp:428</a></div></div>
17308</div><!-- fragment -->
17309</div>
17310</div>
17311<a id="a56ff60c2946bf0b7e772007acce0d7ec"></a>
17312<h2 class="memtitle"><span class="permalink"><a href="#a56ff60c2946bf0b7e772007acce0d7ec">&#9670;&nbsp;</a></span>IsMultiplicationSupported()</h2>
17313
17314<div class="memitem">
17315<div class="memproto">
17316 <table class="memname">
17317 <tr>
17318 <td class="memname">bool IsMultiplicationSupported </td>
17319 <td>(</td>
17320 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17321 <td class="paramname"><em>backend</em>, </td>
17322 </tr>
17323 <tr>
17324 <td class="paramkey"></td>
17325 <td></td>
17326 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17327 <td class="paramname"><em>input0</em>, </td>
17328 </tr>
17329 <tr>
17330 <td class="paramkey"></td>
17331 <td></td>
17332 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17333 <td class="paramname"><em>input1</em>, </td>
17334 </tr>
17335 <tr>
17336 <td class="paramkey"></td>
17337 <td></td>
17338 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17339 <td class="paramname"><em>output</em>, </td>
17340 </tr>
17341 <tr>
17342 <td class="paramkey"></td>
17343 <td></td>
17344 <td class="paramtype">char *&#160;</td>
17345 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17346 </tr>
17347 <tr>
17348 <td class="paramkey"></td>
17349 <td></td>
17350 <td class="paramtype">size_t&#160;</td>
17351 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17352 </tr>
17353 <tr>
17354 <td></td>
17355 <td>)</td>
17356 <td></td><td></td>
17357 </tr>
17358 </table>
17359</div><div class="memdoc">
17360
17361<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17362
17363<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00438">438</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17364
17365<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17366<div class="fragment"><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a56ff60c2946bf0b7e772007acce0d7ec">IsMultiplicationSupported</a>, input0, input1, output);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a56ff60c2946bf0b7e772007acce0d7ec"><div class="ttname"><a href="namespacearmnn.xhtml#a56ff60c2946bf0b7e772007acce0d7ec">armnn::IsMultiplicationSupported</a></div><div class="ttdeci">bool IsMultiplicationSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00438">LayerSupport.cpp:438</a></div></div>
17367<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17368</div><!-- fragment -->
17369</div>
17370</div>
17371<a id="a754b0ac19fd6341ce2b5f480c3b35e8e"></a>
17372<h2 class="memtitle"><span class="permalink"><a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">&#9670;&nbsp;</a></span>IsNormalizationSupported()</h2>
17373
17374<div class="memitem">
17375<div class="memproto">
17376 <table class="memname">
17377 <tr>
17378 <td class="memname">bool IsNormalizationSupported </td>
17379 <td>(</td>
17380 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17381 <td class="paramname"><em>backend</em>, </td>
17382 </tr>
17383 <tr>
17384 <td class="paramkey"></td>
17385 <td></td>
17386 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17387 <td class="paramname"><em>input</em>, </td>
17388 </tr>
17389 <tr>
17390 <td class="paramkey"></td>
17391 <td></td>
17392 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17393 <td class="paramname"><em>output</em>, </td>
17394 </tr>
17395 <tr>
17396 <td class="paramkey"></td>
17397 <td></td>
17398 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
17399 <td class="paramname"><em>descriptor</em>, </td>
17400 </tr>
17401 <tr>
17402 <td class="paramkey"></td>
17403 <td></td>
17404 <td class="paramtype">char *&#160;</td>
17405 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17406 </tr>
17407 <tr>
17408 <td class="paramkey"></td>
17409 <td></td>
17410 <td class="paramtype">size_t&#160;</td>
17411 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17412 </tr>
17413 <tr>
17414 <td></td>
17415 <td>)</td>
17416 <td></td><td></td>
17417 </tr>
17418 </table>
17419</div><div class="memdoc">
17420
17421<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17422
17423<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00448">448</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17424
17425<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17426<div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a754b0ac19fd6341ce2b5f480c3b35e8e">IsNormalizationSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a754b0ac19fd6341ce2b5f480c3b35e8e"><div class="ttname"><a href="namespacearmnn.xhtml#a754b0ac19fd6341ce2b5f480c3b35e8e">armnn::IsNormalizationSupported</a></div><div class="ttdeci">bool IsNormalizationSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const NormalizationDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00448">LayerSupport.cpp:448</a></div></div>
17427<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17428</div><!-- fragment -->
17429</div>
17430</div>
17431<a id="ad05c0670c947d35d39b3b0217e9975cf"></a>
17432<h2 class="memtitle"><span class="permalink"><a href="#ad05c0670c947d35d39b3b0217e9975cf">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[1/4]</span></h2>
17433
17434<div class="memitem">
17435<div class="memproto">
17436 <table class="memname">
17437 <tr>
17438 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
17439 <td>(</td>
17440 <td class="paramtype">const QueueDescriptorType &amp;&#160;</td>
17441 <td class="paramname"></td><td>)</td>
17442 <td></td>
17443 </tr>
17444 </table>
17445</div><div class="memdoc">
17446
17447<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.xhtml">RefWorkloadFactory.hpp</a>.</p>
17448<div class="fragment"><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div></div><!-- fragment -->
17449</div>
17450</div>
17451<a id="a93e7b76d19b33076b2a4eae44014d5ea"></a>
17452<h2 class="memtitle"><span class="permalink"><a href="#a93e7b76d19b33076b2a4eae44014d5ea">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[2/4]</span></h2>
17453
17454<div class="memitem">
17455<div class="memproto">
17456 <table class="memname">
17457 <tr>
17458 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
17459 <td>(</td>
17460 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a> &amp;&#160;</td>
17461 <td class="paramname"></td><td>)</td>
17462 <td></td>
17463 </tr>
17464 </table>
17465</div><div class="memdoc">
17466
17467<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.xhtml">RefWorkloadFactory.hpp</a>.</p>
17468<div class="fragment"><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
17469</div>
17470</div>
17471<a id="a05323af66b9f762e269a27562a2bbdd0"></a>
17472<h2 class="memtitle"><span class="permalink"><a href="#a05323af66b9f762e269a27562a2bbdd0">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[3/4]</span></h2>
17473
17474<div class="memitem">
17475<div class="memproto">
17476 <table class="memname">
17477 <tr>
17478 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
17479 <td>(</td>
17480 <td class="paramtype">const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.xhtml">ConstantQueueDescriptor</a> &amp;&#160;</td>
17481 <td class="paramname"></td><td>)</td>
17482 <td></td>
17483 </tr>
17484 </table>
17485</div><div class="memdoc">
17486
17487<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.xhtml#l00024">24</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.xhtml">RefWorkloadFactory.hpp</a>.</p>
17488<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
17489</div>
17490</div>
17491<a id="a91332212b6a2cc9c0ea32af03c600b4f"></a>
17492<h2 class="memtitle"><span class="permalink"><a href="#a91332212b6a2cc9c0ea32af03c600b4f">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[4/4]</span></h2>
17493
17494<div class="memitem">
17495<div class="memproto">
17496 <table class="memname">
17497 <tr>
17498 <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
17499 <td>(</td>
17500 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.xhtml">PermuteQueueDescriptor</a> &amp;&#160;</td>
17501 <td class="paramname"></td><td>)</td>
17502 <td></td>
17503 </tr>
17504 </table>
17505</div><div class="memdoc">
17506
17507<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8hpp_source.xhtml#l00027">27</a> of file <a class="el" href="_ref_workload_factory_8hpp_source.xhtml">RefWorkloadFactory.hpp</a>.</p>
17508<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div></div><!-- fragment -->
17509</div>
17510</div>
17511<a id="a701cecec7714cf8bc9dca804f473610d"></a>
17512<h2 class="memtitle"><span class="permalink"><a href="#a701cecec7714cf8bc9dca804f473610d">&#9670;&nbsp;</a></span>IsOutputSupported()</h2>
17513
17514<div class="memitem">
17515<div class="memproto">
17516 <table class="memname">
17517 <tr>
17518 <td class="memname">bool IsOutputSupported </td>
17519 <td>(</td>
17520 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17521 <td class="paramname"><em>backend</em>, </td>
17522 </tr>
17523 <tr>
17524 <td class="paramkey"></td>
17525 <td></td>
17526 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17527 <td class="paramname"><em>output</em>, </td>
17528 </tr>
17529 <tr>
17530 <td class="paramkey"></td>
17531 <td></td>
17532 <td class="paramtype">char *&#160;</td>
17533 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17534 </tr>
17535 <tr>
17536 <td class="paramkey"></td>
17537 <td></td>
17538 <td class="paramtype">size_t&#160;</td>
17539 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17540 </tr>
17541 <tr>
17542 <td></td>
17543 <td>)</td>
17544 <td></td><td></td>
17545 </tr>
17546 </table>
17547</div><div class="memdoc">
17548
17549<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17550
17551<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00458">458</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17552
17553<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17554
17555<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
17556<div class="fragment"><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a701cecec7714cf8bc9dca804f473610d">IsOutputSupported</a>, output);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17557<div class="ttc" id="namespacearmnn_xhtml_a701cecec7714cf8bc9dca804f473610d"><div class="ttname"><a href="namespacearmnn.xhtml#a701cecec7714cf8bc9dca804f473610d">armnn::IsOutputSupported</a></div><div class="ttdeci">bool IsOutputSupported(const BackendId &amp;backend, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00458">LayerSupport.cpp:458</a></div></div>
17558</div><!-- fragment -->
17559</div>
17560</div>
17561<a id="a515e8a98d7ef9ecda64a2e1e5298461a"></a>
17562<h2 class="memtitle"><span class="permalink"><a href="#a515e8a98d7ef9ecda64a2e1e5298461a">&#9670;&nbsp;</a></span>IsPadSupported()</h2>
17563
17564<div class="memitem">
17565<div class="memproto">
17566 <table class="memname">
17567 <tr>
17568 <td class="memname">bool IsPadSupported </td>
17569 <td>(</td>
17570 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17571 <td class="paramname"><em>backend</em>, </td>
17572 </tr>
17573 <tr>
17574 <td class="paramkey"></td>
17575 <td></td>
17576 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17577 <td class="paramname"><em>input</em>, </td>
17578 </tr>
17579 <tr>
17580 <td class="paramkey"></td>
17581 <td></td>
17582 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17583 <td class="paramname"><em>output</em>, </td>
17584 </tr>
17585 <tr>
17586 <td class="paramkey"></td>
17587 <td></td>
17588 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
17589 <td class="paramname"><em>descriptor</em>, </td>
17590 </tr>
17591 <tr>
17592 <td class="paramkey"></td>
17593 <td></td>
17594 <td class="paramtype">char *&#160;</td>
17595 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17596 </tr>
17597 <tr>
17598 <td class="paramkey"></td>
17599 <td></td>
17600 <td class="paramtype">size_t&#160;</td>
17601 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17602 </tr>
17603 <tr>
17604 <td></td>
17605 <td>)</td>
17606 <td></td><td></td>
17607 </tr>
17608 </table>
17609</div><div class="memdoc">
17610
17611<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17612
17613<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00466">466</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17614
17615<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17616<div class="fragment"><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;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a515e8a98d7ef9ecda64a2e1e5298461a">IsPadSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a515e8a98d7ef9ecda64a2e1e5298461a"><div class="ttname"><a href="namespacearmnn.xhtml#a515e8a98d7ef9ecda64a2e1e5298461a">armnn::IsPadSupported</a></div><div class="ttdeci">bool IsPadSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PadDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00466">LayerSupport.cpp:466</a></div></div>
17617<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17618</div><!-- fragment -->
17619</div>
17620</div>
17621<a id="aa3a1bea3b3cd5611f13c06020dababc4"></a>
17622<h2 class="memtitle"><span class="permalink"><a href="#aa3a1bea3b3cd5611f13c06020dababc4">&#9670;&nbsp;</a></span>IsPermuteSupported()</h2>
17623
17624<div class="memitem">
17625<div class="memproto">
17626 <table class="memname">
17627 <tr>
17628 <td class="memname">bool IsPermuteSupported </td>
17629 <td>(</td>
17630 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17631 <td class="paramname"><em>backend</em>, </td>
17632 </tr>
17633 <tr>
17634 <td class="paramkey"></td>
17635 <td></td>
17636 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17637 <td class="paramname"><em>input</em>, </td>
17638 </tr>
17639 <tr>
17640 <td class="paramkey"></td>
17641 <td></td>
17642 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17643 <td class="paramname"><em>output</em>, </td>
17644 </tr>
17645 <tr>
17646 <td class="paramkey"></td>
17647 <td></td>
17648 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
17649 <td class="paramname"><em>descriptor</em>, </td>
17650 </tr>
17651 <tr>
17652 <td class="paramkey"></td>
17653 <td></td>
17654 <td class="paramtype">char *&#160;</td>
17655 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17656 </tr>
17657 <tr>
17658 <td class="paramkey"></td>
17659 <td></td>
17660 <td class="paramtype">size_t&#160;</td>
17661 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17662 </tr>
17663 <tr>
17664 <td></td>
17665 <td>)</td>
17666 <td></td><td></td>
17667 </tr>
17668 </table>
17669</div><div class="memdoc">
17670
17671<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17672
17673<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00501">501</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17674
17675<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17676<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aa3a1bea3b3cd5611f13c06020dababc4">IsPermuteSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17677<div class="ttc" id="namespacearmnn_xhtml_aa3a1bea3b3cd5611f13c06020dababc4"><div class="ttname"><a href="namespacearmnn.xhtml#aa3a1bea3b3cd5611f13c06020dababc4">armnn::IsPermuteSupported</a></div><div class="ttdeci">bool IsPermuteSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const PermuteDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00501">LayerSupport.cpp:501</a></div></div>
17678</div><!-- fragment -->
17679</div>
17680</div>
17681<a id="aea548aa1485adbeeb3e393a13bb6bff8"></a>
17682<h2 class="memtitle"><span class="permalink"><a href="#aea548aa1485adbeeb3e393a13bb6bff8">&#9670;&nbsp;</a></span>IsPooling2dSupported()</h2>
17683
17684<div class="memitem">
17685<div class="memproto">
17686 <table class="memname">
17687 <tr>
17688 <td class="memname">bool IsPooling2dSupported </td>
17689 <td>(</td>
17690 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17691 <td class="paramname"><em>backend</em>, </td>
17692 </tr>
17693 <tr>
17694 <td class="paramkey"></td>
17695 <td></td>
17696 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17697 <td class="paramname"><em>input</em>, </td>
17698 </tr>
17699 <tr>
17700 <td class="paramkey"></td>
17701 <td></td>
17702 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17703 <td class="paramname"><em>output</em>, </td>
17704 </tr>
17705 <tr>
17706 <td class="paramkey"></td>
17707 <td></td>
17708 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
17709 <td class="paramname"><em>descriptor</em>, </td>
17710 </tr>
17711 <tr>
17712 <td class="paramkey"></td>
17713 <td></td>
17714 <td class="paramtype">char *&#160;</td>
17715 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17716 </tr>
17717 <tr>
17718 <td class="paramkey"></td>
17719 <td></td>
17720 <td class="paramtype">size_t&#160;</td>
17721 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17722 </tr>
17723 <tr>
17724 <td></td>
17725 <td>)</td>
17726 <td></td><td></td>
17727 </tr>
17728 </table>
17729</div><div class="memdoc">
17730
17731<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17732
17733<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00511">511</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17734
17735<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17736<div class="fragment"><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aea548aa1485adbeeb3e393a13bb6bff8">IsPooling2dSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aea548aa1485adbeeb3e393a13bb6bff8"><div class="ttname"><a href="namespacearmnn.xhtml#aea548aa1485adbeeb3e393a13bb6bff8">armnn::IsPooling2dSupported</a></div><div class="ttdeci">bool IsPooling2dSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const Pooling2dDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00511">LayerSupport.cpp:511</a></div></div>
17737<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17738</div><!-- fragment -->
17739</div>
17740</div>
17741<a id="a3b4773564c3fd8c88e697ffe0afbe10d"></a>
17742<h2 class="memtitle"><span class="permalink"><a href="#a3b4773564c3fd8c88e697ffe0afbe10d">&#9670;&nbsp;</a></span>IsPreCompiledSupported()</h2>
17743
17744<div class="memitem">
17745<div class="memproto">
17746 <table class="memname">
17747 <tr>
17748 <td class="memname">bool armnn::IsPreCompiledSupported </td>
17749 <td>(</td>
17750 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17751 <td class="paramname"><em>backend</em>, </td>
17752 </tr>
17753 <tr>
17754 <td class="paramkey"></td>
17755 <td></td>
17756 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17757 <td class="paramname"><em>input</em>, </td>
17758 </tr>
17759 <tr>
17760 <td class="paramkey"></td>
17761 <td></td>
17762 <td class="paramtype">char *&#160;</td>
17763 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17764 </tr>
17765 <tr>
17766 <td class="paramkey"></td>
17767 <td></td>
17768 <td class="paramtype">size_t&#160;</td>
17769 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17770 </tr>
17771 <tr>
17772 <td></td>
17773 <td>)</td>
17774 <td></td><td></td>
17775 </tr>
17776 </table>
17777</div><div class="memdoc">
17778
17779<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17780
17781</div>
17782</div>
17783<a id="a5a0c1871f7e4822adb8b15e8ae76bca0"></a>
17784<h2 class="memtitle"><span class="permalink"><a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">&#9670;&nbsp;</a></span>IsPreluSupported()</h2>
17785
17786<div class="memitem">
17787<div class="memproto">
17788 <table class="memname">
17789 <tr>
17790 <td class="memname">bool IsPreluSupported </td>
17791 <td>(</td>
17792 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17793 <td class="paramname"><em>backend</em>, </td>
17794 </tr>
17795 <tr>
17796 <td class="paramkey"></td>
17797 <td></td>
17798 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17799 <td class="paramname"><em>input</em>, </td>
17800 </tr>
17801 <tr>
17802 <td class="paramkey"></td>
17803 <td></td>
17804 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17805 <td class="paramname"><em>alpha</em>, </td>
17806 </tr>
17807 <tr>
17808 <td class="paramkey"></td>
17809 <td></td>
17810 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17811 <td class="paramname"><em>output</em>, </td>
17812 </tr>
17813 <tr>
17814 <td class="paramkey"></td>
17815 <td></td>
17816 <td class="paramtype">char *&#160;</td>
17817 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
17818 </tr>
17819 <tr>
17820 <td class="paramkey"></td>
17821 <td></td>
17822 <td class="paramtype">size_t&#160;</td>
17823 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
17824 </tr>
17825 <tr>
17826 <td></td>
17827 <td>)</td>
17828 <td></td><td></td>
17829 </tr>
17830 </table>
17831</div><div class="memdoc">
17832
17833<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
17834
17835<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00521">521</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
17836
17837<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
17838<div class="fragment"><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;{</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a5a0c1871f7e4822adb8b15e8ae76bca0">IsPreluSupported</a>, input, alpha, output);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5a0c1871f7e4822adb8b15e8ae76bca0"><div class="ttname"><a href="namespacearmnn.xhtml#a5a0c1871f7e4822adb8b15e8ae76bca0">armnn::IsPreluSupported</a></div><div class="ttdeci">bool IsPreluSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;alpha, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00521">LayerSupport.cpp:521</a></div></div>
17839<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
17840</div><!-- fragment -->
17841</div>
17842</div>
17843<a id="a47d136a5519331dee24f5e01b206ae7c"></a>
17844<h2 class="memtitle"><span class="permalink"><a href="#a47d136a5519331dee24f5e01b206ae7c">&#9670;&nbsp;</a></span>IsQAsymmS8()</h2>
17845
17846<div class="memitem">
17847<div class="memproto">
17848 <table class="memname">
17849 <tr>
17850 <td class="memname">bool armnn::IsQAsymmS8 </td>
17851 <td>(</td>
17852 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
17853 <td class="paramname"><em>info</em></td><td>)</td>
17854 <td></td>
17855 </tr>
17856 </table>
17857</div><div class="memdoc">
17858
17859<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00073">73</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
17860
17861<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17862
17863<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
17864<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmS8&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17865</div><!-- fragment -->
17866</div>
17867</div>
17868<a id="a37c36bbf668cd8a0d7dcd731c9b591d7"></a>
17869<h2 class="memtitle"><span class="permalink"><a href="#a37c36bbf668cd8a0d7dcd731c9b591d7">&#9670;&nbsp;</a></span>IsQAsymmU8()</h2>
17870
17871<div class="memitem">
17872<div class="memproto">
17873 <table class="memname">
17874 <tr>
17875 <td class="memname">bool armnn::IsQAsymmU8 </td>
17876 <td>(</td>
17877 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
17878 <td class="paramname"><em>info</em></td><td>)</td>
17879 <td></td>
17880 </tr>
17881 </table>
17882</div><div class="memdoc">
17883
17884<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00078">78</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
17885
17886<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17887
17888<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
17889<div class="fragment"><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; <span class="keywordflow">return</span> IsDataType&lt;DataType::QAsymmU8&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17890</div><!-- fragment -->
17891</div>
17892</div>
17893<a id="abcd0d843d5736b78740ae73249b6b977"></a>
17894<h2 class="memtitle"><span class="permalink"><a href="#abcd0d843d5736b78740ae73249b6b977">&#9670;&nbsp;</a></span>IsQSymmS16()</h2>
17895
17896<div class="memitem">
17897<div class="memproto">
17898 <table class="memname">
17899 <tr>
17900 <td class="memname">bool armnn::IsQSymmS16 </td>
17901 <td>(</td>
17902 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
17903 <td class="paramname"><em>info</em></td><td>)</td>
17904 <td></td>
17905 </tr>
17906 </table>
17907</div><div class="memdoc">
17908
17909<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00063">63</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
17910
17911<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17912
17913<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00442">RefWorkloadFactory::CreatePad()</a>, <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00460">RefWorkloadFactory::CreatePermute()</a>, and <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00581">RefWorkloadFactory::CreateTranspose()</a>.</p>
17914<div class="fragment"><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS16&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17915</div><!-- fragment -->
17916</div>
17917</div>
17918<a id="a09a7cd515c3b495e61b2a5116bf6a335"></a>
17919<h2 class="memtitle"><span class="permalink"><a href="#a09a7cd515c3b495e61b2a5116bf6a335">&#9670;&nbsp;</a></span>IsQSymmS8()</h2>
17920
17921<div class="memitem">
17922<div class="memproto">
17923 <table class="memname">
17924 <tr>
17925 <td class="memname">bool armnn::IsQSymmS8 </td>
17926 <td>(</td>
17927 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
17928 <td class="paramname"><em>info</em></td><td>)</td>
17929 <td></td>
17930 </tr>
17931 </table>
17932</div><div class="memdoc">
17933
17934<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00068">68</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
17935
17936<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
17937
17938<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
17939<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> IsDataType&lt;DataType::QSymmS8&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
17940</div><!-- fragment -->
17941</div>
17942</div>
17943<a id="ad91bc7bfe29186f5d78c28386c6c5309"></a>
17944<h2 class="memtitle"><span class="permalink"><a href="#ad91bc7bfe29186f5d78c28386c6c5309">&#9670;&nbsp;</a></span>IsQuantized8BitType()</h2>
17945
17946<div class="memitem">
17947<div class="memproto">
17948 <table class="memname">
17949 <tr>
17950 <td class="memname">constexpr bool armnn::IsQuantized8BitType </td>
17951 <td>(</td>
17952 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
17953 <td class="paramname"><em>dataType</em></td><td>)</td>
17954 <td></td>
17955 </tr>
17956 </table>
17957</div><div class="memdoc">
17958
17959<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00241">241</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
17960
17961<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>.</p>
17962
17963<p class="reference">Referenced by <a class="el" href="_workload_data_8cpp_source.xhtml#l00025">GetBiasDataType()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00419">RefLayerSupport::IsConvolution2dSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00551">RefLayerSupport::IsDepthwiseConvolutionSupported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00827">RefLayerSupport::IsFullyConnectedSupported()</a>, and <a class="el" href="_types_utils_8hpp_source.xhtml#l00251">IsQuantizedType()</a>.</p>
17964<div class="fragment"><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> dataType == DataType::QAsymmU8 ||</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; dataType == DataType::QAsymmS8 ||</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; dataType == DataType::QSymmS8 ||</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; dataType == DataType::QuantizedSymm8PerAxis;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
17965<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
17966</div><!-- fragment -->
17967</div>
17968</div>
17969<a id="a4069381c4737d57fc7fd299a61ad9ca1"></a>
17970<h2 class="memtitle"><span class="permalink"><a href="#a4069381c4737d57fc7fd299a61ad9ca1">&#9670;&nbsp;</a></span>IsQuantizedLstmSupported()</h2>
17971
17972<div class="memitem">
17973<div class="memproto">
17974 <table class="memname">
17975 <tr>
17976 <td class="memname">bool IsQuantizedLstmSupported </td>
17977 <td>(</td>
17978 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
17979 <td class="paramname"><em>backend</em>, </td>
17980 </tr>
17981 <tr>
17982 <td class="paramkey"></td>
17983 <td></td>
17984 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17985 <td class="paramname"><em>input</em>, </td>
17986 </tr>
17987 <tr>
17988 <td class="paramkey"></td>
17989 <td></td>
17990 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17991 <td class="paramname"><em>previousCellStateIn</em>, </td>
17992 </tr>
17993 <tr>
17994 <td class="paramkey"></td>
17995 <td></td>
17996 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
17997 <td class="paramname"><em>previousOutputIn</em>, </td>
17998 </tr>
17999 <tr>
18000 <td class="paramkey"></td>
18001 <td></td>
18002 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18003 <td class="paramname"><em>cellStateOut</em>, </td>
18004 </tr>
18005 <tr>
18006 <td class="paramkey"></td>
18007 <td></td>
18008 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18009 <td class="paramname"><em>output</em>, </td>
18010 </tr>
18011 <tr>
18012 <td class="paramkey"></td>
18013 <td></td>
18014 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
18015 <td class="paramname"><em>paramsInfo</em>, </td>
18016 </tr>
18017 <tr>
18018 <td class="paramkey"></td>
18019 <td></td>
18020 <td class="paramtype">char *&#160;</td>
18021 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18022 </tr>
18023 <tr>
18024 <td class="paramkey"></td>
18025 <td></td>
18026 <td class="paramtype">size_t&#160;</td>
18027 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18028 </tr>
18029 <tr>
18030 <td></td>
18031 <td>)</td>
18032 <td></td><td></td>
18033 </tr>
18034 </table>
18035</div><div class="memdoc">
18036
18037<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18038
18039<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00486">486</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18040
18041<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18042<div class="fragment"><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;{</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a4069381c4737d57fc7fd299a61ad9ca1">IsQuantizedLstmSupported</a>, input, previousCellStateIn, previousOutputIn,</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; cellStateOut, output, paramsInfo);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18043<div class="ttc" id="namespacearmnn_xhtml_a4069381c4737d57fc7fd299a61ad9ca1"><div class="ttname"><a href="namespacearmnn.xhtml#a4069381c4737d57fc7fd299a61ad9ca1">armnn::IsQuantizedLstmSupported</a></div><div class="ttdeci">bool IsQuantizedLstmSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;previousCellStateIn, const TensorInfo &amp;previousOutputIn, const TensorInfo &amp;cellStateOut, const TensorInfo &amp;output, const QuantizedLstmInputParamsInfo &amp;paramsInfo, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00486">LayerSupport.cpp:486</a></div></div>
18044</div><!-- fragment -->
18045</div>
18046</div>
18047<a id="ad44c007f21af2d0375e3ef9400a1b275"></a>
18048<h2 class="memtitle"><span class="permalink"><a href="#ad44c007f21af2d0375e3ef9400a1b275">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[1/2]</span></h2>
18049
18050<div class="memitem">
18051<div class="memproto">
18052 <table class="memname">
18053 <tr>
18054 <td class="memname">constexpr bool armnn::IsQuantizedType </td>
18055 <td>(</td>
18056 <td class="paramname"></td><td>)</td>
18057 <td></td>
18058 </tr>
18059 </table>
18060</div><div class="memdoc">
18061
18062<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00236">236</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
18063
18064<p class="reference">Referenced by <a class="el" href="_tensor_8cpp_source.xhtml#l00290">TensorInfo::IsQuantized()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l02228">QuantizeQueueDescriptor::Validate()</a>, and <a class="el" href="_workload_data_8cpp_source.xhtml#l02550">DequantizeQueueDescriptor::Validate()</a>.</p>
18065<div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> std::is_integral&lt;T&gt;::value;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;}</div></div><!-- fragment -->
18066</div>
18067</div>
18068<a id="aa172264d7075abf828e0b6894996a561"></a>
18069<h2 class="memtitle"><span class="permalink"><a href="#aa172264d7075abf828e0b6894996a561">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[2/2]</span></h2>
18070
18071<div class="memitem">
18072<div class="memproto">
18073 <table class="memname">
18074 <tr>
18075 <td class="memname">constexpr bool armnn::IsQuantizedType </td>
18076 <td>(</td>
18077 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
18078 <td class="paramname"><em>dataType</em></td><td>)</td>
18079 <td></td>
18080 </tr>
18081 </table>
18082</div><div class="memdoc">
18083
18084<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00251">251</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
18085
18086<p class="reference">References <a class="el" href="_types_utils_8hpp_source.xhtml#l00241">IsQuantized8BitType()</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
18087<div class="fragment"><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="keywordflow">return</span> dataType == DataType::QSymmS16 || <a class="code" href="namespacearmnn.xhtml#ad91bc7bfe29186f5d78c28386c6c5309">IsQuantized8BitType</a>(dataType);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad91bc7bfe29186f5d78c28386c6c5309"><div class="ttname"><a href="namespacearmnn.xhtml#ad91bc7bfe29186f5d78c28386c6c5309">armnn::IsQuantized8BitType</a></div><div class="ttdeci">constexpr bool IsQuantized8BitType(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00241">TypesUtils.hpp:241</a></div></div>
18088</div><!-- fragment -->
18089</div>
18090</div>
18091<a id="a599a95f708fa0b6a6230dc6c9e73ea3e"></a>
18092<h2 class="memtitle"><span class="permalink"><a href="#a599a95f708fa0b6a6230dc6c9e73ea3e">&#9670;&nbsp;</a></span>IsQuantizeSupported()</h2>
18093
18094<div class="memitem">
18095<div class="memproto">
18096 <table class="memname">
18097 <tr>
18098 <td class="memname">bool armnn::IsQuantizeSupported </td>
18099 <td>(</td>
18100 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18101 <td class="paramname"><em>backend</em>, </td>
18102 </tr>
18103 <tr>
18104 <td class="paramkey"></td>
18105 <td></td>
18106 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18107 <td class="paramname"><em>input</em>, </td>
18108 </tr>
18109 <tr>
18110 <td class="paramkey"></td>
18111 <td></td>
18112 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18113 <td class="paramname"><em>output</em>, </td>
18114 </tr>
18115 <tr>
18116 <td class="paramkey"></td>
18117 <td></td>
18118 <td class="paramtype">char *&#160;</td>
18119 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
18120 </tr>
18121 <tr>
18122 <td class="paramkey"></td>
18123 <td></td>
18124 <td class="paramtype">size_t&#160;</td>
18125 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
18126 </tr>
18127 <tr>
18128 <td></td>
18129 <td>)</td>
18130 <td></td><td></td>
18131 </tr>
18132 </table>
18133</div><div class="memdoc">
18134
18135<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00477">477</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18136
18137<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18138<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a599a95f708fa0b6a6230dc6c9e73ea3e">IsQuantizeSupported</a>, input, output);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18139<div class="ttc" id="namespacearmnn_xhtml_a599a95f708fa0b6a6230dc6c9e73ea3e"><div class="ttname"><a href="namespacearmnn.xhtml#a599a95f708fa0b6a6230dc6c9e73ea3e">armnn::IsQuantizeSupported</a></div><div class="ttdeci">bool IsQuantizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00477">LayerSupport.cpp:477</a></div></div>
18140</div><!-- fragment -->
18141</div>
18142</div>
18143<a id="a6b10dc0d12c7f4a52ad01b9975dbe908"></a>
18144<h2 class="memtitle"><span class="permalink"><a href="#a6b10dc0d12c7f4a52ad01b9975dbe908">&#9670;&nbsp;</a></span>IsReadyForSplitAssignment()</h2>
18145
18146<div class="memitem">
18147<div class="memproto">
18148 <table class="memname">
18149 <tr>
18150 <td class="memname">bool armnn::IsReadyForSplitAssignment </td>
18151 <td>(</td>
18152 <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
18153 <td class="paramname"><em>layerInfos</em>, </td>
18154 </tr>
18155 <tr>
18156 <td class="paramkey"></td>
18157 <td></td>
18158 <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
18159 <td class="paramname"><em>layerInfo</em>&#160;</td>
18160 </tr>
18161 <tr>
18162 <td></td>
18163 <td>)</td>
18164 <td></td><td></td>
18165 </tr>
18166 </table>
18167</div><div class="memdoc">
18168
18169<p class="definition">Definition at line <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00369">369</a> of file <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml">SubgraphViewSelector.cpp</a>.</p>
18170
18171<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00262">ForEachLayerInput()</a>.</p>
18172
18173<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
18174<div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">bool</span> ready = <span class="keyword">true</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">ForEachLayerInput</a>(layerInfos, layerInfo,</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; [&amp;ready](LayerSelectionInfo&amp; parentInfo)</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">if</span> (!parentInfo.m_IsProcessed)</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; ready = false;</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; <span class="keywordflow">return</span> ready;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_afce94270d9c4a51cd0c4ac6a58af4e26"><div class="ttname"><a href="namespacearmnn.xhtml#afce94270d9c4a51cd0c4ac6a58af4e26">armnn::ForEachLayerInput</a></div><div class="ttdeci">void ForEachLayerInput(LayerSelectionInfo::LayerInfoContainer &amp;layerInfos, LayerSelectionInfo &amp;layerInfo, Delegate function)</div><div class="ttdef"><b>Definition:</b> <a href="_subgraph_view_selector_8cpp_source.xhtml#l00262">SubgraphViewSelector.cpp:262</a></div></div>
18175</div><!-- fragment -->
18176</div>
18177</div>
18178<a id="af5014cbc003abcf201d4372b0012734c"></a>
18179<h2 class="memtitle"><span class="permalink"><a href="#af5014cbc003abcf201d4372b0012734c">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[1/2]</span></h2>
18180
18181<div class="memitem">
18182<div class="memproto">
18183 <table class="memname">
18184 <tr>
18185 <td class="memname">bool armnn::IsReshapeSupported </td>
18186 <td>(</td>
18187 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18188 <td class="paramname"><em>backend</em>, </td>
18189 </tr>
18190 <tr>
18191 <td class="paramkey"></td>
18192 <td></td>
18193 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18194 <td class="paramname"><em>input</em>, </td>
18195 </tr>
18196 <tr>
18197 <td class="paramkey"></td>
18198 <td></td>
18199 <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;&#160;</td>
18200 <td class="paramname"><em>descriptor</em>, </td>
18201 </tr>
18202 <tr>
18203 <td class="paramkey"></td>
18204 <td></td>
18205 <td class="paramtype">char *&#160;</td>
18206 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18207 </tr>
18208 <tr>
18209 <td class="paramkey"></td>
18210 <td></td>
18211 <td class="paramtype">size_t&#160;</td>
18212 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18213 </tr>
18214 <tr>
18215 <td></td>
18216 <td>)</td>
18217 <td></td><td></td>
18218 </tr>
18219 </table>
18220</div><div class="memdoc">
18221
18222<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18223
18224<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00531">IsReshapeSupported()</a>.</p>
18225
18226</div>
18227</div>
18228<a id="a4bb384bc41a94bc7c3b4f543cd3fd437"></a>
18229<h2 class="memtitle"><span class="permalink"><a href="#a4bb384bc41a94bc7c3b4f543cd3fd437">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[2/2]</span></h2>
18230
18231<div class="memitem">
18232<div class="memproto">
18233 <table class="memname">
18234 <tr>
18235 <td class="memname">bool armnn::IsReshapeSupported </td>
18236 <td>(</td>
18237 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18238 <td class="paramname"><em>backend</em>, </td>
18239 </tr>
18240 <tr>
18241 <td class="paramkey"></td>
18242 <td></td>
18243 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18244 <td class="paramname"><em>input</em>, </td>
18245 </tr>
18246 <tr>
18247 <td class="paramkey"></td>
18248 <td></td>
18249 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18250 <td class="paramname"><em>output</em>, </td>
18251 </tr>
18252 <tr>
18253 <td class="paramkey"></td>
18254 <td></td>
18255 <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;&#160;</td>
18256 <td class="paramname"><em>descriptor</em>, </td>
18257 </tr>
18258 <tr>
18259 <td class="paramkey"></td>
18260 <td></td>
18261 <td class="paramtype">char *&#160;</td>
18262 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
18263 </tr>
18264 <tr>
18265 <td class="paramkey"></td>
18266 <td></td>
18267 <td class="paramtype">size_t&#160;</td>
18268 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
18269 </tr>
18270 <tr>
18271 <td></td>
18272 <td>)</td>
18273 <td></td><td></td>
18274 </tr>
18275 </table>
18276</div><div class="memdoc">
18277
18278<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00531">531</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18279
18280<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#af5014cbc003abcf201d4372b0012734c">IsReshapeSupported()</a>.</p>
18281<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a4bb384bc41a94bc7c3b4f543cd3fd437">IsReshapeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4bb384bc41a94bc7c3b4f543cd3fd437"><div class="ttname"><a href="namespacearmnn.xhtml#a4bb384bc41a94bc7c3b4f543cd3fd437">armnn::IsReshapeSupported</a></div><div class="ttdeci">bool IsReshapeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ReshapeDescriptor &amp;descriptor, char *reasonIfUnsupported, size_t reasonIfUnsupportedMaxLength)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00531">LayerSupport.cpp:531</a></div></div>
18282<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18283</div><!-- fragment -->
18284</div>
18285</div>
18286<a id="a936d3f949a334668f839fb0bdd170b72"></a>
18287<h2 class="memtitle"><span class="permalink"><a href="#a936d3f949a334668f839fb0bdd170b72">&#9670;&nbsp;</a></span>IsResizeBilinearSupported()</h2>
18288
18289<div class="memitem">
18290<div class="memproto">
18291 <table class="memname">
18292 <tr>
18293 <td class="memname">bool IsResizeBilinearSupported </td>
18294 <td>(</td>
18295 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18296 <td class="paramname"><em>backend</em>, </td>
18297 </tr>
18298 <tr>
18299 <td class="paramkey"></td>
18300 <td></td>
18301 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18302 <td class="paramname"><em>input</em>, </td>
18303 </tr>
18304 <tr>
18305 <td class="paramkey"></td>
18306 <td></td>
18307 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18308 <td class="paramname"><em>output</em>, </td>
18309 </tr>
18310 <tr>
18311 <td class="paramkey"></td>
18312 <td></td>
18313 <td class="paramtype">char *&#160;</td>
18314 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18315 </tr>
18316 <tr>
18317 <td class="paramkey"></td>
18318 <td></td>
18319 <td class="paramtype">size_t&#160;</td>
18320 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18321 </tr>
18322 <tr>
18323 <td></td>
18324 <td>)</td>
18325 <td></td><td></td>
18326 </tr>
18327 </table>
18328</div><div class="memdoc">
18329
18330<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18331
18332<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00552">552</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18333
18334<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, <a class="el" href="_layer_support_8cpp_source.xhtml#l00541">IsResizeSupported()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00749">ResizeDescriptor::m_Method</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00746">ResizeDescriptor::m_TargetHeight</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00744">ResizeDescriptor::m_TargetWidth</a>.</p>
18335<div class="fragment"><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;{</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; ResizeDescriptor descriptor;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; descriptor.m_Method = ResizeMethod::Bilinear;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = output.GetShape();</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; descriptor.m_TargetWidth = outputShape[3];</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; descriptor.m_TargetHeight = outputShape[2];</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="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18336<div class="ttc" id="namespacearmnn_xhtml_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.xhtml#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00541">LayerSupport.cpp:541</a></div></div>
18337</div><!-- fragment -->
18338</div>
18339</div>
18340<a id="a90a1aadb53c7537f225252afd681ff22"></a>
18341<h2 class="memtitle"><span class="permalink"><a href="#a90a1aadb53c7537f225252afd681ff22">&#9670;&nbsp;</a></span>IsResizeSupported()</h2>
18342
18343<div class="memitem">
18344<div class="memproto">
18345 <table class="memname">
18346 <tr>
18347 <td class="memname">bool IsResizeSupported </td>
18348 <td>(</td>
18349 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18350 <td class="paramname"><em>backend</em>, </td>
18351 </tr>
18352 <tr>
18353 <td class="paramkey"></td>
18354 <td></td>
18355 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18356 <td class="paramname"><em>input</em>, </td>
18357 </tr>
18358 <tr>
18359 <td class="paramkey"></td>
18360 <td></td>
18361 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18362 <td class="paramname"><em>output</em>, </td>
18363 </tr>
18364 <tr>
18365 <td class="paramkey"></td>
18366 <td></td>
18367 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
18368 <td class="paramname"><em>descriptor</em>, </td>
18369 </tr>
18370 <tr>
18371 <td class="paramkey"></td>
18372 <td></td>
18373 <td class="paramtype">char *&#160;</td>
18374 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18375 </tr>
18376 <tr>
18377 <td class="paramkey"></td>
18378 <td></td>
18379 <td class="paramtype">size_t&#160;</td>
18380 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18381 </tr>
18382 <tr>
18383 <td></td>
18384 <td>)</td>
18385 <td></td><td></td>
18386 </tr>
18387 </table>
18388</div><div class="memdoc">
18389
18390<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18391
18392<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00541">541</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18393
18394<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18395
18396<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00552">IsResizeBilinearSupported()</a>.</p>
18397<div class="fragment"><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a90a1aadb53c7537f225252afd681ff22">IsResizeSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18398<div class="ttc" id="namespacearmnn_xhtml_a90a1aadb53c7537f225252afd681ff22"><div class="ttname"><a href="namespacearmnn.xhtml#a90a1aadb53c7537f225252afd681ff22">armnn::IsResizeSupported</a></div><div class="ttdeci">bool IsResizeSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const ResizeDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00541">LayerSupport.cpp:541</a></div></div>
18399</div><!-- fragment -->
18400</div>
18401</div>
18402<a id="accc42ba9679a474e75b43cdf1efa9422"></a>
18403<h2 class="memtitle"><span class="permalink"><a href="#accc42ba9679a474e75b43cdf1efa9422">&#9670;&nbsp;</a></span>IsRsqrtSupported()</h2>
18404
18405<div class="memitem">
18406<div class="memproto">
18407 <table class="memname">
18408 <tr>
18409 <td class="memname">bool IsRsqrtSupported </td>
18410 <td>(</td>
18411 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18412 <td class="paramname"><em>backend</em>, </td>
18413 </tr>
18414 <tr>
18415 <td class="paramkey"></td>
18416 <td></td>
18417 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18418 <td class="paramname"><em>input</em>, </td>
18419 </tr>
18420 <tr>
18421 <td class="paramkey"></td>
18422 <td></td>
18423 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18424 <td class="paramname"><em>output</em>, </td>
18425 </tr>
18426 <tr>
18427 <td class="paramkey"></td>
18428 <td></td>
18429 <td class="paramtype">char *&#160;</td>
18430 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18431 </tr>
18432 <tr>
18433 <td class="paramkey"></td>
18434 <td></td>
18435 <td class="paramtype">size_t&#160;</td>
18436 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18437 </tr>
18438 <tr>
18439 <td></td>
18440 <td>)</td>
18441 <td></td><td></td>
18442 </tr>
18443 </table>
18444</div><div class="memdoc">
18445
18446<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18447
18448<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00568">568</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18449
18450<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a>.</p>
18451<div class="fragment"><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;{</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend,</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; IsElementwiseUnarySupported,</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; input,</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; output,</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ElementwiseUnaryDescriptor(UnaryOperation::Rsqrt));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18452</div><!-- fragment -->
18453</div>
18454</div>
18455<a id="a87b99791ccf8793961db67ea19eb6fa4"></a>
18456<h2 class="memtitle"><span class="permalink"><a href="#a87b99791ccf8793961db67ea19eb6fa4">&#9670;&nbsp;</a></span>IsSigned32()</h2>
18457
18458<div class="memitem">
18459<div class="memproto">
18460 <table class="memname">
18461 <tr>
18462 <td class="memname">bool armnn::IsSigned32 </td>
18463 <td>(</td>
18464 <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
18465 <td class="paramname"><em>info</em></td><td>)</td>
18466 <td></td>
18467 </tr>
18468 </table>
18469</div><div class="memdoc">
18470
18471<p class="definition">Definition at line <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00048">48</a> of file <a class="el" href="_ref_workload_factory_8cpp_source.xhtml">RefWorkloadFactory.cpp</a>.</p>
18472
18473<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
18474
18475<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
18476<div class="fragment"><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="keywordflow">return</span> IsDataType&lt;DataType::Signed32&gt;(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
18477</div><!-- fragment -->
18478</div>
18479</div>
18480<a id="a477695b3df8c0abd2efcf02051f61065"></a>
18481<h2 class="memtitle"><span class="permalink"><a href="#a477695b3df8c0abd2efcf02051f61065">&#9670;&nbsp;</a></span>IsSoftmaxSupported()</h2>
18482
18483<div class="memitem">
18484<div class="memproto">
18485 <table class="memname">
18486 <tr>
18487 <td class="memname">bool IsSoftmaxSupported </td>
18488 <td>(</td>
18489 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18490 <td class="paramname"><em>backend</em>, </td>
18491 </tr>
18492 <tr>
18493 <td class="paramkey"></td>
18494 <td></td>
18495 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18496 <td class="paramname"><em>input</em>, </td>
18497 </tr>
18498 <tr>
18499 <td class="paramkey"></td>
18500 <td></td>
18501 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18502 <td class="paramname"><em>output</em>, </td>
18503 </tr>
18504 <tr>
18505 <td class="paramkey"></td>
18506 <td></td>
18507 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
18508 <td class="paramname"><em>descriptor</em>, </td>
18509 </tr>
18510 <tr>
18511 <td class="paramkey"></td>
18512 <td></td>
18513 <td class="paramtype">char *&#160;</td>
18514 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18515 </tr>
18516 <tr>
18517 <td class="paramkey"></td>
18518 <td></td>
18519 <td class="paramtype">size_t&#160;</td>
18520 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18521 </tr>
18522 <tr>
18523 <td></td>
18524 <td>)</td>
18525 <td></td><td></td>
18526 </tr>
18527 </table>
18528</div><div class="memdoc">
18529
18530<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18531
18532<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00581">581</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18533
18534<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18535<div class="fragment"><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;{</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a477695b3df8c0abd2efcf02051f61065">IsSoftmaxSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a477695b3df8c0abd2efcf02051f61065"><div class="ttname"><a href="namespacearmnn.xhtml#a477695b3df8c0abd2efcf02051f61065">armnn::IsSoftmaxSupported</a></div><div class="ttdeci">bool IsSoftmaxSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SoftmaxDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00581">LayerSupport.cpp:581</a></div></div>
18536<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18537</div><!-- fragment -->
18538</div>
18539</div>
18540<a id="a4b3a41e24d4b9e2b4cb431dc90c48970"></a>
18541<h2 class="memtitle"><span class="permalink"><a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">&#9670;&nbsp;</a></span>IsSpaceToBatchNdSupported()</h2>
18542
18543<div class="memitem">
18544<div class="memproto">
18545 <table class="memname">
18546 <tr>
18547 <td class="memname">bool IsSpaceToBatchNdSupported </td>
18548 <td>(</td>
18549 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18550 <td class="paramname"><em>backend</em>, </td>
18551 </tr>
18552 <tr>
18553 <td class="paramkey"></td>
18554 <td></td>
18555 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18556 <td class="paramname"><em>input</em>, </td>
18557 </tr>
18558 <tr>
18559 <td class="paramkey"></td>
18560 <td></td>
18561 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18562 <td class="paramname"><em>output</em>, </td>
18563 </tr>
18564 <tr>
18565 <td class="paramkey"></td>
18566 <td></td>
18567 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
18568 <td class="paramname"><em>descriptor</em>, </td>
18569 </tr>
18570 <tr>
18571 <td class="paramkey"></td>
18572 <td></td>
18573 <td class="paramtype">char *&#160;</td>
18574 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18575 </tr>
18576 <tr>
18577 <td class="paramkey"></td>
18578 <td></td>
18579 <td class="paramtype">size_t&#160;</td>
18580 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18581 </tr>
18582 <tr>
18583 <td></td>
18584 <td>)</td>
18585 <td></td><td></td>
18586 </tr>
18587 </table>
18588</div><div class="memdoc">
18589
18590<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18591
18592<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00591">591</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18593
18594<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18595<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a4b3a41e24d4b9e2b4cb431dc90c48970">IsSpaceToBatchNdSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18596<div class="ttc" id="namespacearmnn_xhtml_a4b3a41e24d4b9e2b4cb431dc90c48970"><div class="ttname"><a href="namespacearmnn.xhtml#a4b3a41e24d4b9e2b4cb431dc90c48970">armnn::IsSpaceToBatchNdSupported</a></div><div class="ttdeci">bool IsSpaceToBatchNdSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToBatchNdDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00591">LayerSupport.cpp:591</a></div></div>
18597</div><!-- fragment -->
18598</div>
18599</div>
18600<a id="addffaddb4bdb6ec506fe08debcce9b75"></a>
18601<h2 class="memtitle"><span class="permalink"><a href="#addffaddb4bdb6ec506fe08debcce9b75">&#9670;&nbsp;</a></span>IsSpaceToDepthSupported()</h2>
18602
18603<div class="memitem">
18604<div class="memproto">
18605 <table class="memname">
18606 <tr>
18607 <td class="memname">bool IsSpaceToDepthSupported </td>
18608 <td>(</td>
18609 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18610 <td class="paramname"><em>backend</em>, </td>
18611 </tr>
18612 <tr>
18613 <td class="paramkey"></td>
18614 <td></td>
18615 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18616 <td class="paramname"><em>input</em>, </td>
18617 </tr>
18618 <tr>
18619 <td class="paramkey"></td>
18620 <td></td>
18621 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18622 <td class="paramname"><em>output</em>, </td>
18623 </tr>
18624 <tr>
18625 <td class="paramkey"></td>
18626 <td></td>
18627 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
18628 <td class="paramname"><em>descriptor</em>, </td>
18629 </tr>
18630 <tr>
18631 <td class="paramkey"></td>
18632 <td></td>
18633 <td class="paramtype">char *&#160;</td>
18634 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18635 </tr>
18636 <tr>
18637 <td class="paramkey"></td>
18638 <td></td>
18639 <td class="paramtype">size_t&#160;</td>
18640 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18641 </tr>
18642 <tr>
18643 <td></td>
18644 <td>)</td>
18645 <td></td><td></td>
18646 </tr>
18647 </table>
18648</div><div class="memdoc">
18649
18650<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18651
18652<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00601">601</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18653
18654<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00043">ARMNN_DEPRECATED_MSG</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18655<div class="fragment"><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;{</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#addffaddb4bdb6ec506fe08debcce9b75">IsSpaceToDepthSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18656<div class="ttc" id="namespacearmnn_xhtml_addffaddb4bdb6ec506fe08debcce9b75"><div class="ttname"><a href="namespacearmnn.xhtml#addffaddb4bdb6ec506fe08debcce9b75">armnn::IsSpaceToDepthSupported</a></div><div class="ttdeci">bool IsSpaceToDepthSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const SpaceToDepthDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00601">LayerSupport.cpp:601</a></div></div>
18657</div><!-- fragment -->
18658</div>
18659</div>
18660<a id="a7ce5f7168bf0d1e7efe269d59ed564ba"></a>
18661<h2 class="memtitle"><span class="permalink"><a href="#a7ce5f7168bf0d1e7efe269d59ed564ba">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[1/2]</span></h2>
18662
18663<div class="memitem">
18664<div class="memproto">
18665 <table class="memname">
18666 <tr>
18667 <td class="memname">bool IsSplitterSupported </td>
18668 <td>(</td>
18669 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18670 <td class="paramname"><em>backend</em>, </td>
18671 </tr>
18672 <tr>
18673 <td class="paramkey"></td>
18674 <td></td>
18675 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18676 <td class="paramname"><em>input</em>, </td>
18677 </tr>
18678 <tr>
18679 <td class="paramkey"></td>
18680 <td></td>
18681 <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
18682 <td class="paramname"><em>descriptor</em>, </td>
18683 </tr>
18684 <tr>
18685 <td class="paramkey"></td>
18686 <td></td>
18687 <td class="paramtype">char *&#160;</td>
18688 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18689 </tr>
18690 <tr>
18691 <td class="paramkey"></td>
18692 <td></td>
18693 <td class="paramtype">size_t&#160;</td>
18694 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18695 </tr>
18696 <tr>
18697 <td></td>
18698 <td>)</td>
18699 <td></td><td></td>
18700 </tr>
18701 </table>
18702</div><div class="memdoc">
18703
18704<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00612">612</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18705
18706<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18707
18708<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00623">IsSplitterSupported()</a>.</p>
18709<div class="fragment"><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, descriptor);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
18710<div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18711<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
18712<div class="ttc" id="namespacearmnn_xhtml_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.xhtml#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00612">LayerSupport.cpp:612</a></div></div>
18713</div><!-- fragment -->
18714</div>
18715</div>
18716<a id="a6487e532e0cb72a210096185e31e2bd6"></a>
18717<h2 class="memtitle"><span class="permalink"><a href="#a6487e532e0cb72a210096185e31e2bd6">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[2/2]</span></h2>
18718
18719<div class="memitem">
18720<div class="memproto">
18721 <table class="memname">
18722 <tr>
18723 <td class="memname">bool IsSplitterSupported </td>
18724 <td>(</td>
18725 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18726 <td class="paramname"><em>backend</em>, </td>
18727 </tr>
18728 <tr>
18729 <td class="paramkey"></td>
18730 <td></td>
18731 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18732 <td class="paramname"><em>input</em>, </td>
18733 </tr>
18734 <tr>
18735 <td class="paramkey"></td>
18736 <td></td>
18737 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
18738 <td class="paramname"><em>outputs</em>, </td>
18739 </tr>
18740 <tr>
18741 <td class="paramkey"></td>
18742 <td></td>
18743 <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
18744 <td class="paramname"><em>descriptor</em>, </td>
18745 </tr>
18746 <tr>
18747 <td class="paramkey"></td>
18748 <td></td>
18749 <td class="paramtype">char *&#160;</td>
18750 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18751 </tr>
18752 <tr>
18753 <td class="paramkey"></td>
18754 <td></td>
18755 <td class="paramtype">size_t&#160;</td>
18756 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18757 </tr>
18758 <tr>
18759 <td></td>
18760 <td>)</td>
18761 <td></td><td></td>
18762 </tr>
18763 </table>
18764</div><div class="memdoc">
18765
18766<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18767
18768<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00623">623</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18769
18770<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>, and <a class="el" href="_layer_support_8cpp_source.xhtml#l00612">IsSplitterSupported()</a>.</p>
18771<div class="fragment"><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;{</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a7ce5f7168bf0d1e7efe269d59ed564ba">IsSplitterSupported</a>, input, outputs, descriptor);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18772<div class="ttc" id="namespacearmnn_xhtml_a7ce5f7168bf0d1e7efe269d59ed564ba"><div class="ttname"><a href="namespacearmnn.xhtml#a7ce5f7168bf0d1e7efe269d59ed564ba">armnn::IsSplitterSupported</a></div><div class="ttdeci">bool IsSplitterSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const ViewsDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00612">LayerSupport.cpp:612</a></div></div>
18773</div><!-- fragment -->
18774</div>
18775</div>
18776<a id="a10e8442be2b8596afd5770e98b904caa"></a>
18777<h2 class="memtitle"><span class="permalink"><a href="#a10e8442be2b8596afd5770e98b904caa">&#9670;&nbsp;</a></span>IsStackSupported()</h2>
18778
18779<div class="memitem">
18780<div class="memproto">
18781 <table class="memname">
18782 <tr>
18783 <td class="memname">bool armnn::IsStackSupported </td>
18784 <td>(</td>
18785 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18786 <td class="paramname"><em>backend</em>, </td>
18787 </tr>
18788 <tr>
18789 <td class="paramkey"></td>
18790 <td></td>
18791 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
18792 <td class="paramname"><em>inputs</em>, </td>
18793 </tr>
18794 <tr>
18795 <td class="paramkey"></td>
18796 <td></td>
18797 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18798 <td class="paramname"><em>output</em>, </td>
18799 </tr>
18800 <tr>
18801 <td class="paramkey"></td>
18802 <td></td>
18803 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
18804 <td class="paramname"><em>descriptor</em>, </td>
18805 </tr>
18806 <tr>
18807 <td class="paramkey"></td>
18808 <td></td>
18809 <td class="paramtype">char *&#160;</td>
18810 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18811 </tr>
18812 <tr>
18813 <td class="paramkey"></td>
18814 <td></td>
18815 <td class="paramtype">size_t&#160;</td>
18816 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18817 </tr>
18818 <tr>
18819 <td></td>
18820 <td>)</td>
18821 <td></td><td></td>
18822 </tr>
18823 </table>
18824</div><div class="memdoc">
18825
18826<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18827
18828</div>
18829</div>
18830<a id="aebe3dc6730e1b29aee9c9f33b8f94121"></a>
18831<h2 class="memtitle"><span class="permalink"><a href="#aebe3dc6730e1b29aee9c9f33b8f94121">&#9670;&nbsp;</a></span>IsStridedSliceSupported()</h2>
18832
18833<div class="memitem">
18834<div class="memproto">
18835 <table class="memname">
18836 <tr>
18837 <td class="memname">bool IsStridedSliceSupported </td>
18838 <td>(</td>
18839 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18840 <td class="paramname"><em>backend</em>, </td>
18841 </tr>
18842 <tr>
18843 <td class="paramkey"></td>
18844 <td></td>
18845 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18846 <td class="paramname"><em>input</em>, </td>
18847 </tr>
18848 <tr>
18849 <td class="paramkey"></td>
18850 <td></td>
18851 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18852 <td class="paramname"><em>output</em>, </td>
18853 </tr>
18854 <tr>
18855 <td class="paramkey"></td>
18856 <td></td>
18857 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
18858 <td class="paramname"><em>descriptor</em>, </td>
18859 </tr>
18860 <tr>
18861 <td class="paramkey"></td>
18862 <td></td>
18863 <td class="paramtype">char *&#160;</td>
18864 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18865 </tr>
18866 <tr>
18867 <td class="paramkey"></td>
18868 <td></td>
18869 <td class="paramtype">size_t&#160;</td>
18870 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18871 </tr>
18872 <tr>
18873 <td></td>
18874 <td>)</td>
18875 <td></td><td></td>
18876 </tr>
18877 </table>
18878</div><div class="memdoc">
18879
18880<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18881
18882<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00633">633</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18883
18884<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18885<div class="fragment"><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#aebe3dc6730e1b29aee9c9f33b8f94121">IsStridedSliceSupported</a>, input, output, descriptor);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18886<div class="ttc" id="namespacearmnn_xhtml_aebe3dc6730e1b29aee9c9f33b8f94121"><div class="ttname"><a href="namespacearmnn.xhtml#aebe3dc6730e1b29aee9c9f33b8f94121">armnn::IsStridedSliceSupported</a></div><div class="ttdeci">bool IsStridedSliceSupported(const BackendId &amp;backend, const TensorInfo &amp;input, const TensorInfo &amp;output, const StridedSliceDescriptor &amp;descriptor, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00633">LayerSupport.cpp:633</a></div></div>
18887</div><!-- fragment -->
18888</div>
18889</div>
18890<a id="afbf752a51fa513e0a54e343be130d962"></a>
18891<h2 class="memtitle"><span class="permalink"><a href="#afbf752a51fa513e0a54e343be130d962">&#9670;&nbsp;</a></span>IsSubtractionSupported()</h2>
18892
18893<div class="memitem">
18894<div class="memproto">
18895 <table class="memname">
18896 <tr>
18897 <td class="memname">bool IsSubtractionSupported </td>
18898 <td>(</td>
18899 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
18900 <td class="paramname"><em>backend</em>, </td>
18901 </tr>
18902 <tr>
18903 <td class="paramkey"></td>
18904 <td></td>
18905 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18906 <td class="paramname"><em>input0</em>, </td>
18907 </tr>
18908 <tr>
18909 <td class="paramkey"></td>
18910 <td></td>
18911 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18912 <td class="paramname"><em>input1</em>, </td>
18913 </tr>
18914 <tr>
18915 <td class="paramkey"></td>
18916 <td></td>
18917 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
18918 <td class="paramname"><em>output</em>, </td>
18919 </tr>
18920 <tr>
18921 <td class="paramkey"></td>
18922 <td></td>
18923 <td class="paramtype">char *&#160;</td>
18924 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
18925 </tr>
18926 <tr>
18927 <td class="paramkey"></td>
18928 <td></td>
18929 <td class="paramtype">size_t&#160;</td>
18930 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
18931 </tr>
18932 <tr>
18933 <td></td>
18934 <td>)</td>
18935 <td></td><td></td>
18936 </tr>
18937 </table>
18938</div><div class="memdoc">
18939
18940<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
18941
18942<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00643">643</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
18943
18944<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
18945<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#afbf752a51fa513e0a54e343be130d962">IsSubtractionSupported</a>, input0, input1, output);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
18946<div class="ttc" id="namespacearmnn_xhtml_afbf752a51fa513e0a54e343be130d962"><div class="ttname"><a href="namespacearmnn.xhtml#afbf752a51fa513e0a54e343be130d962">armnn::IsSubtractionSupported</a></div><div class="ttdeci">bool IsSubtractionSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00643">LayerSupport.cpp:643</a></div></div>
18947</div><!-- fragment -->
18948</div>
18949</div>
18950<a id="af6dbe371ec651a8e0063624fdf32afc0"></a>
18951<h2 class="memtitle"><span class="permalink"><a href="#af6dbe371ec651a8e0063624fdf32afc0">&#9670;&nbsp;</a></span>IsSupportedForDataTypeGeneric()</h2>
18952
18953<div class="memitem">
18954<div class="memproto">
18955 <table class="memname">
18956 <tr>
18957 <td class="memname">bool armnn::IsSupportedForDataTypeGeneric </td>
18958 <td>(</td>
18959 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
18960 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
18961 </tr>
18962 <tr>
18963 <td class="paramkey"></td>
18964 <td></td>
18965 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
18966 <td class="paramname"><em>dataType</em>, </td>
18967 </tr>
18968 <tr>
18969 <td class="paramkey"></td>
18970 <td></td>
18971 <td class="paramtype">Float16Func&#160;</td>
18972 <td class="paramname"><em>float16FuncPtr</em>, </td>
18973 </tr>
18974 <tr>
18975 <td class="paramkey"></td>
18976 <td></td>
18977 <td class="paramtype">Float32Func&#160;</td>
18978 <td class="paramname"><em>float32FuncPtr</em>, </td>
18979 </tr>
18980 <tr>
18981 <td class="paramkey"></td>
18982 <td></td>
18983 <td class="paramtype">Uint8Func&#160;</td>
18984 <td class="paramname"><em>uint8FuncPtr</em>, </td>
18985 </tr>
18986 <tr>
18987 <td class="paramkey"></td>
18988 <td></td>
18989 <td class="paramtype">Int32Func&#160;</td>
18990 <td class="paramname"><em>int32FuncPtr</em>, </td>
18991 </tr>
18992 <tr>
18993 <td class="paramkey"></td>
18994 <td></td>
18995 <td class="paramtype">BooleanFunc&#160;</td>
18996 <td class="paramname"><em>booleanFuncPtr</em>, </td>
18997 </tr>
18998 <tr>
18999 <td class="paramkey"></td>
19000 <td></td>
19001 <td class="paramtype">Params &amp;&amp;...&#160;</td>
19002 <td class="paramname"><em>params</em>&#160;</td>
19003 </tr>
19004 <tr>
19005 <td></td>
19006 <td>)</td>
19007 <td></td><td></td>
19008 </tr>
19009 </table>
19010</div><div class="memdoc">
19011
19012<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00027">27</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
19013
19014<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
19015
19016<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00379">RefLayerSupport::IsConvertFp16ToFp32Supported()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00399">RefLayerSupport::IsConvertFp32ToFp16Supported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00377">NeonLayerSupport::IsFloorSupported()</a>.</p>
19017<div class="fragment"><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; <span class="keywordflow">switch</span>(dataType)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">return</span> float16FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> float32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> uint8FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> int32FuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> DataType::Boolean:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> booleanFuncPtr(reasonIfUnsupported, std::forward&lt;Params&gt;(params)...);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div></div><!-- fragment -->
19018</div>
19019</div>
19020<a id="a85fcfea412723413a05f0743c84053aa"></a>
19021<h2 class="memtitle"><span class="permalink"><a href="#a85fcfea412723413a05f0743c84053aa">&#9670;&nbsp;</a></span>IsSwitchSupported()</h2>
19022
19023<div class="memitem">
19024<div class="memproto">
19025 <table class="memname">
19026 <tr>
19027 <td class="memname">bool IsSwitchSupported </td>
19028 <td>(</td>
19029 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
19030 <td class="paramname"><em>backend</em>, </td>
19031 </tr>
19032 <tr>
19033 <td class="paramkey"></td>
19034 <td></td>
19035 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19036 <td class="paramname"><em>input0</em>, </td>
19037 </tr>
19038 <tr>
19039 <td class="paramkey"></td>
19040 <td></td>
19041 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19042 <td class="paramname"><em>input1</em>, </td>
19043 </tr>
19044 <tr>
19045 <td class="paramkey"></td>
19046 <td></td>
19047 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19048 <td class="paramname"><em>output0</em>, </td>
19049 </tr>
19050 <tr>
19051 <td class="paramkey"></td>
19052 <td></td>
19053 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19054 <td class="paramname"><em>output1</em>, </td>
19055 </tr>
19056 <tr>
19057 <td class="paramkey"></td>
19058 <td></td>
19059 <td class="paramtype">char *&#160;</td>
19060 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
19061 </tr>
19062 <tr>
19063 <td class="paramkey"></td>
19064 <td></td>
19065 <td class="paramtype">size_t&#160;</td>
19066 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
19067 </tr>
19068 <tr>
19069 <td></td>
19070 <td>)</td>
19071 <td></td><td></td>
19072 </tr>
19073 </table>
19074</div><div class="memdoc">
19075
19076<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
19077
19078<p class="definition">Definition at line <a class="el" href="_layer_support_8cpp_source.xhtml#l00653">653</a> of file <a class="el" href="_layer_support_8cpp_source.xhtml">LayerSupport.cpp</a>.</p>
19079
19080<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
19081<div class="fragment"><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; <a class="code" href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a>(backend, <a class="code" href="namespacearmnn.xhtml#a85fcfea412723413a05f0743c84053aa">IsSwitchSupported</a>, input0, input1, output0, output1);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;}</div><div class="ttc" id="_layer_support_8cpp_xhtml_aaed0ec9df6d4157960512266e8b74b26"><div class="ttname"><a href="_layer_support_8cpp.xhtml#aaed0ec9df6d4157960512266e8b74b26">FORWARD_LAYER_SUPPORT_FUNC</a></div><div class="ttdeci">#define FORWARD_LAYER_SUPPORT_FUNC(backendId, func,...)</div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00038">LayerSupport.cpp:38</a></div></div>
19082<div class="ttc" id="namespacearmnn_xhtml_a85fcfea412723413a05f0743c84053aa"><div class="ttname"><a href="namespacearmnn.xhtml#a85fcfea412723413a05f0743c84053aa">armnn::IsSwitchSupported</a></div><div class="ttdeci">bool IsSwitchSupported(const BackendId &amp;backend, const TensorInfo &amp;input0, const TensorInfo &amp;input1, const TensorInfo &amp;output0, const TensorInfo &amp;output1, char *reasonIfUnsupported=nullptr, size_t reasonIfUnsupportedMaxLength=1024)</div><div class="ttdoc">Deprecated in favor of IBackend and ILayerSupport interfaces. </div><div class="ttdef"><b>Definition:</b> <a href="_layer_support_8cpp_source.xhtml#l00653">LayerSupport.cpp:653</a></div></div>
19083</div><!-- fragment -->
19084</div>
19085</div>
19086<a id="ac6cc8e0bd35d229486fe6d844d88e0d4"></a>
19087<h2 class="memtitle"><span class="permalink"><a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">&#9670;&nbsp;</a></span>IsTransposeConvolution2dSupported()</h2>
19088
19089<div class="memitem">
19090<div class="memproto">
19091 <table class="memname">
19092 <tr>
19093 <td class="memname">bool armnn::IsTransposeConvolution2dSupported </td>
19094 <td>(</td>
19095 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
19096 <td class="paramname"><em>backend</em>, </td>
19097 </tr>
19098 <tr>
19099 <td class="paramkey"></td>
19100 <td></td>
19101 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19102 <td class="paramname"><em>input</em>, </td>
19103 </tr>
19104 <tr>
19105 <td class="paramkey"></td>
19106 <td></td>
19107 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19108 <td class="paramname"><em>output</em>, </td>
19109 </tr>
19110 <tr>
19111 <td class="paramkey"></td>
19112 <td></td>
19113 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
19114 <td class="paramname"><em>descriptor</em>, </td>
19115 </tr>
19116 <tr>
19117 <td class="paramkey"></td>
19118 <td></td>
19119 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
19120 <td class="paramname"><em>weights</em>, </td>
19121 </tr>
19122 <tr>
19123 <td class="paramkey"></td>
19124 <td></td>
19125 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
19126 <td class="paramname"><em>biases</em>, </td>
19127 </tr>
19128 <tr>
19129 <td class="paramkey"></td>
19130 <td></td>
19131 <td class="paramtype">char *&#160;</td>
19132 <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
19133 </tr>
19134 <tr>
19135 <td class="paramkey"></td>
19136 <td></td>
19137 <td class="paramtype">size_t&#160;</td>
19138 <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
19139 </tr>
19140 <tr>
19141 <td></td>
19142 <td>)</td>
19143 <td></td><td></td>
19144 </tr>
19145 </table>
19146</div><div class="memdoc">
19147
19148<p>Deprecated in favor of <a class="el" href="classarmnn_1_1_i_backend.xhtml" title="Each backend should implement an IBackend. ">IBackend</a> and <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> interfaces. </p>
19149
19150</div>
19151</div>
19152<a id="ac4fb1513cf6f4f3f40ab3d6559ec4067"></a>
19153<h2 class="memtitle"><span class="permalink"><a href="#ac4fb1513cf6f4f3f40ab3d6559ec4067">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[1/58]</span></h2>
19154
19155<div class="memitem">
19156<div class="memproto">
19157 <table class="memname">
19158 <tr>
19159 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19160 <td>(</td>
19161 <td class="paramtype">const T *&#160;</td>
19162 <td class="paramname"> = <code>nullptr</code></td><td>)</td>
19163 <td></td>
19164 </tr>
19165 </table>
19166</div><div class="memdoc">
19167
19168</div>
19169</div>
19170<a id="afb1e69829289fb07cc349c0884f27abd"></a>
19171<h2 class="memtitle"><span class="permalink"><a href="#afb1e69829289fb07cc349c0884f27abd">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[2/58]</span></h2>
19172
19173<div class="memitem">
19174<div class="memproto">
19175 <table class="memname">
19176 <tr>
19177 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19178 <td>(</td>
19179 <td class="paramtype">const <a class="el" href="classarmnn_1_1_activation_layer.xhtml">ActivationLayer</a> *&#160;</td>
19180 <td class="paramname"></td><td>)</td>
19181 <td></td>
19182 </tr>
19183 </table>
19184</div><div class="memdoc">
19185
19186<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00094">94</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19187
19188</div>
19189</div>
19190<a id="acc630e11a5baa28ad5723568a7a60109"></a>
19191<h2 class="memtitle"><span class="permalink"><a href="#acc630e11a5baa28ad5723568a7a60109">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[3/58]</span></h2>
19192
19193<div class="memitem">
19194<div class="memproto">
19195 <table class="memname">
19196 <tr>
19197 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19198 <td>(</td>
19199 <td class="paramtype">const <a class="el" href="classarmnn_1_1_addition_layer.xhtml">AdditionLayer</a> *&#160;</td>
19200 <td class="paramname"></td><td>)</td>
19201 <td></td>
19202 </tr>
19203 </table>
19204</div><div class="memdoc">
19205
19206<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00095">95</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19207
19208</div>
19209</div>
19210<a id="a324e860c347972fce7a1c07531bed06e"></a>
19211<h2 class="memtitle"><span class="permalink"><a href="#a324e860c347972fce7a1c07531bed06e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[4/58]</span></h2>
19212
19213<div class="memitem">
19214<div class="memproto">
19215 <table class="memname">
19216 <tr>
19217 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19218 <td>(</td>
19219 <td class="paramtype">const <a class="el" href="classarmnn_1_1_arg_min_max_layer.xhtml">ArgMinMaxLayer</a> *&#160;</td>
19220 <td class="paramname"></td><td>)</td>
19221 <td></td>
19222 </tr>
19223 </table>
19224</div><div class="memdoc">
19225
19226<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00096">96</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19227
19228</div>
19229</div>
19230<a id="ae22db3ab5196edbb2e4e5244adc512e3"></a>
19231<h2 class="memtitle"><span class="permalink"><a href="#ae22db3ab5196edbb2e4e5244adc512e3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[5/58]</span></h2>
19232
19233<div class="memitem">
19234<div class="memproto">
19235 <table class="memname">
19236 <tr>
19237 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19238 <td>(</td>
19239 <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_normalization_layer.xhtml">BatchNormalizationLayer</a> *&#160;</td>
19240 <td class="paramname"></td><td>)</td>
19241 <td></td>
19242 </tr>
19243 </table>
19244</div><div class="memdoc">
19245
19246<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00097">97</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19247
19248</div>
19249</div>
19250<a id="a87ffe3fb58ec36989d343e53e23fb0f8"></a>
19251<h2 class="memtitle"><span class="permalink"><a href="#a87ffe3fb58ec36989d343e53e23fb0f8">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[6/58]</span></h2>
19252
19253<div class="memitem">
19254<div class="memproto">
19255 <table class="memname">
19256 <tr>
19257 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19258 <td>(</td>
19259 <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">BatchToSpaceNdLayer</a> *&#160;</td>
19260 <td class="paramname"></td><td>)</td>
19261 <td></td>
19262 </tr>
19263 </table>
19264</div><div class="memdoc">
19265
19266<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00098">98</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19267
19268</div>
19269</div>
19270<a id="a43b8024cb70c07116be132ca28b12a21"></a>
19271<h2 class="memtitle"><span class="permalink"><a href="#a43b8024cb70c07116be132ca28b12a21">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[7/58]</span></h2>
19272
19273<div class="memitem">
19274<div class="memproto">
19275 <table class="memname">
19276 <tr>
19277 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19278 <td>(</td>
19279 <td class="paramtype">const <a class="el" href="classarmnn_1_1_comparison_layer.xhtml">ComparisonLayer</a> *&#160;</td>
19280 <td class="paramname"></td><td>)</td>
19281 <td></td>
19282 </tr>
19283 </table>
19284</div><div class="memdoc">
19285
19286<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00099">99</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19287
19288</div>
19289</div>
19290<a id="a300c356944bb1e9d2dff6191d1c3501c"></a>
19291<h2 class="memtitle"><span class="permalink"><a href="#a300c356944bb1e9d2dff6191d1c3501c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[8/58]</span></h2>
19292
19293<div class="memitem">
19294<div class="memproto">
19295 <table class="memname">
19296 <tr>
19297 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19298 <td>(</td>
19299 <td class="paramtype">const <a class="el" href="classarmnn_1_1_concat_layer.xhtml">ConcatLayer</a> *&#160;</td>
19300 <td class="paramname"></td><td>)</td>
19301 <td></td>
19302 </tr>
19303 </table>
19304</div><div class="memdoc">
19305
19306<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00100">100</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19307
19308</div>
19309</div>
19310<a id="a307007c2249288fe158bfdfaf9e1c413"></a>
19311<h2 class="memtitle"><span class="permalink"><a href="#a307007c2249288fe158bfdfaf9e1c413">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[9/58]</span></h2>
19312
19313<div class="memitem">
19314<div class="memproto">
19315 <table class="memname">
19316 <tr>
19317 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19318 <td>(</td>
19319 <td class="paramtype">const <a class="el" href="classarmnn_1_1_constant_layer.xhtml">ConstantLayer</a> *&#160;</td>
19320 <td class="paramname"></td><td>)</td>
19321 <td></td>
19322 </tr>
19323 </table>
19324</div><div class="memdoc">
19325
19326<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00101">101</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19327
19328</div>
19329</div>
19330<a id="a4471d39d8390fc550c1f8688639e66f5"></a>
19331<h2 class="memtitle"><span class="permalink"><a href="#a4471d39d8390fc550c1f8688639e66f5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[10/58]</span></h2>
19332
19333<div class="memitem">
19334<div class="memproto">
19335 <table class="memname">
19336 <tr>
19337 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19338 <td>(</td>
19339 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> *&#160;</td>
19340 <td class="paramname"></td><td>)</td>
19341 <td></td>
19342 </tr>
19343 </table>
19344</div><div class="memdoc">
19345
19346<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00102">102</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19347
19348</div>
19349</div>
19350<a id="af8df06bed5f1257864645e45948afa5c"></a>
19351<h2 class="memtitle"><span class="permalink"><a href="#af8df06bed5f1257864645e45948afa5c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[11/58]</span></h2>
19352
19353<div class="memitem">
19354<div class="memproto">
19355 <table class="memname">
19356 <tr>
19357 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19358 <td>(</td>
19359 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> *&#160;</td>
19360 <td class="paramname"></td><td>)</td>
19361 <td></td>
19362 </tr>
19363 </table>
19364</div><div class="memdoc">
19365
19366<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00103">103</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19367
19368</div>
19369</div>
19370<a id="ab2f52d0c728933e36f581a07676d9fe9"></a>
19371<h2 class="memtitle"><span class="permalink"><a href="#ab2f52d0c728933e36f581a07676d9fe9">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[12/58]</span></h2>
19372
19373<div class="memitem">
19374<div class="memproto">
19375 <table class="memname">
19376 <tr>
19377 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19378 <td>(</td>
19379 <td class="paramtype">const <a class="el" href="classarmnn_1_1_convolution2d_layer.xhtml">Convolution2dLayer</a> *&#160;</td>
19380 <td class="paramname"></td><td>)</td>
19381 <td></td>
19382 </tr>
19383 </table>
19384</div><div class="memdoc">
19385
19386<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00104">104</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19387
19388</div>
19389</div>
19390<a id="ad596268fcd03c87a4b6fde86f4732546"></a>
19391<h2 class="memtitle"><span class="permalink"><a href="#ad596268fcd03c87a4b6fde86f4732546">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[13/58]</span></h2>
19392
19393<div class="memitem">
19394<div class="memproto">
19395 <table class="memname">
19396 <tr>
19397 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19398 <td>(</td>
19399 <td class="paramtype">const <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> *&#160;</td>
19400 <td class="paramname"></td><td>)</td>
19401 <td></td>
19402 </tr>
19403 </table>
19404</div><div class="memdoc">
19405
19406<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00105">105</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19407
19408</div>
19409</div>
19410<a id="a939154289f544a02baec0735b27b8894"></a>
19411<h2 class="memtitle"><span class="permalink"><a href="#a939154289f544a02baec0735b27b8894">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[14/58]</span></h2>
19412
19413<div class="memitem">
19414<div class="memproto">
19415 <table class="memname">
19416 <tr>
19417 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19418 <td>(</td>
19419 <td class="paramtype">const <a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml">DepthToSpaceLayer</a> *&#160;</td>
19420 <td class="paramname"></td><td>)</td>
19421 <td></td>
19422 </tr>
19423 </table>
19424</div><div class="memdoc">
19425
19426<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00106">106</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19427
19428</div>
19429</div>
19430<a id="a26a46c27bca08b5bd26abba341f1d795"></a>
19431<h2 class="memtitle"><span class="permalink"><a href="#a26a46c27bca08b5bd26abba341f1d795">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[15/58]</span></h2>
19432
19433<div class="memitem">
19434<div class="memproto">
19435 <table class="memname">
19436 <tr>
19437 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19438 <td>(</td>
19439 <td class="paramtype">const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">DepthwiseConvolution2dLayer</a> *&#160;</td>
19440 <td class="paramname"></td><td>)</td>
19441 <td></td>
19442 </tr>
19443 </table>
19444</div><div class="memdoc">
19445
19446<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00107">107</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19447
19448</div>
19449</div>
19450<a id="a95e2d190d7483017b4f4841dd07776e5"></a>
19451<h2 class="memtitle"><span class="permalink"><a href="#a95e2d190d7483017b4f4841dd07776e5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[16/58]</span></h2>
19452
19453<div class="memitem">
19454<div class="memproto">
19455 <table class="memname">
19456 <tr>
19457 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19458 <td>(</td>
19459 <td class="paramtype">const <a class="el" href="classarmnn_1_1_dequantize_layer.xhtml">DequantizeLayer</a> *&#160;</td>
19460 <td class="paramname"></td><td>)</td>
19461 <td></td>
19462 </tr>
19463 </table>
19464</div><div class="memdoc">
19465
19466<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00108">108</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19467
19468</div>
19469</div>
19470<a id="a22772d461066f995cd72d13066b0f46d"></a>
19471<h2 class="memtitle"><span class="permalink"><a href="#a22772d461066f995cd72d13066b0f46d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[17/58]</span></h2>
19472
19473<div class="memitem">
19474<div class="memproto">
19475 <table class="memname">
19476 <tr>
19477 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19478 <td>(</td>
19479 <td class="paramtype">const <a class="el" href="classarmnn_1_1_detection_post_process_layer.xhtml">DetectionPostProcessLayer</a> *&#160;</td>
19480 <td class="paramname"></td><td>)</td>
19481 <td></td>
19482 </tr>
19483 </table>
19484</div><div class="memdoc">
19485
19486<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00109">109</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19487
19488</div>
19489</div>
19490<a id="a955b1001b8c57c60ce443a1e31468f20"></a>
19491<h2 class="memtitle"><span class="permalink"><a href="#a955b1001b8c57c60ce443a1e31468f20">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[18/58]</span></h2>
19492
19493<div class="memitem">
19494<div class="memproto">
19495 <table class="memname">
19496 <tr>
19497 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19498 <td>(</td>
19499 <td class="paramtype">const <a class="el" href="classarmnn_1_1_division_layer.xhtml">DivisionLayer</a> *&#160;</td>
19500 <td class="paramname"></td><td>)</td>
19501 <td></td>
19502 </tr>
19503 </table>
19504</div><div class="memdoc">
19505
19506<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00110">110</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19507
19508</div>
19509</div>
19510<a id="a72f7601d11f32c8d9ccb49a80fcf662a"></a>
19511<h2 class="memtitle"><span class="permalink"><a href="#a72f7601d11f32c8d9ccb49a80fcf662a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[19/58]</span></h2>
19512
19513<div class="memitem">
19514<div class="memproto">
19515 <table class="memname">
19516 <tr>
19517 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19518 <td>(</td>
19519 <td class="paramtype">const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.xhtml">ElementwiseUnaryLayer</a> *&#160;</td>
19520 <td class="paramname"></td><td>)</td>
19521 <td></td>
19522 </tr>
19523 </table>
19524</div><div class="memdoc">
19525
19526<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00111">111</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19527
19528</div>
19529</div>
19530<a id="a4acae0cdcdfab8e941af5c4e42e58cb3"></a>
19531<h2 class="memtitle"><span class="permalink"><a href="#a4acae0cdcdfab8e941af5c4e42e58cb3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[20/58]</span></h2>
19532
19533<div class="memitem">
19534<div class="memproto">
19535 <table class="memname">
19536 <tr>
19537 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19538 <td>(</td>
19539 <td class="paramtype">const <a class="el" href="classarmnn_1_1_fake_quantization_layer.xhtml">FakeQuantizationLayer</a> *&#160;</td>
19540 <td class="paramname"></td><td>)</td>
19541 <td></td>
19542 </tr>
19543 </table>
19544</div><div class="memdoc">
19545
19546<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00112">112</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19547
19548</div>
19549</div>
19550<a id="a575f5487e62465b6b9edbc447a26f32f"></a>
19551<h2 class="memtitle"><span class="permalink"><a href="#a575f5487e62465b6b9edbc447a26f32f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[21/58]</span></h2>
19552
19553<div class="memitem">
19554<div class="memproto">
19555 <table class="memname">
19556 <tr>
19557 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19558 <td>(</td>
19559 <td class="paramtype">const <a class="el" href="classarmnn_1_1_floor_layer.xhtml">FloorLayer</a> *&#160;</td>
19560 <td class="paramname"></td><td>)</td>
19561 <td></td>
19562 </tr>
19563 </table>
19564</div><div class="memdoc">
19565
19566<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00113">113</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19567
19568</div>
19569</div>
19570<a id="aa689e4a3aa77e9d9e5851f566c5eb8b3"></a>
19571<h2 class="memtitle"><span class="permalink"><a href="#aa689e4a3aa77e9d9e5851f566c5eb8b3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[22/58]</span></h2>
19572
19573<div class="memitem">
19574<div class="memproto">
19575 <table class="memname">
19576 <tr>
19577 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19578 <td>(</td>
19579 <td class="paramtype">const <a class="el" href="classarmnn_1_1_fully_connected_layer.xhtml">FullyConnectedLayer</a> *&#160;</td>
19580 <td class="paramname"></td><td>)</td>
19581 <td></td>
19582 </tr>
19583 </table>
19584</div><div class="memdoc">
19585
19586<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00114">114</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19587
19588</div>
19589</div>
19590<a id="a548fb17a9bff172e751ae4bd3add62b5"></a>
19591<h2 class="memtitle"><span class="permalink"><a href="#a548fb17a9bff172e751ae4bd3add62b5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[23/58]</span></h2>
19592
19593<div class="memitem">
19594<div class="memproto">
19595 <table class="memname">
19596 <tr>
19597 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19598 <td>(</td>
19599 <td class="paramtype">const <a class="el" href="classarmnn_1_1_gather_layer.xhtml">GatherLayer</a> *&#160;</td>
19600 <td class="paramname"></td><td>)</td>
19601 <td></td>
19602 </tr>
19603 </table>
19604</div><div class="memdoc">
19605
19606<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00115">115</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19607
19608</div>
19609</div>
19610<a id="adef1c8c63daa9d348a29e74eac33a054"></a>
19611<h2 class="memtitle"><span class="permalink"><a href="#adef1c8c63daa9d348a29e74eac33a054">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[24/58]</span></h2>
19612
19613<div class="memitem">
19614<div class="memproto">
19615 <table class="memname">
19616 <tr>
19617 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19618 <td>(</td>
19619 <td class="paramtype">const <a class="el" href="classarmnn_1_1_input_layer.xhtml">InputLayer</a> *&#160;</td>
19620 <td class="paramname"></td><td>)</td>
19621 <td></td>
19622 </tr>
19623 </table>
19624</div><div class="memdoc">
19625
19626<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00116">116</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19627
19628</div>
19629</div>
19630<a id="a57bcf309be7adcc91001834979f87bde"></a>
19631<h2 class="memtitle"><span class="permalink"><a href="#a57bcf309be7adcc91001834979f87bde">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[25/58]</span></h2>
19632
19633<div class="memitem">
19634<div class="memproto">
19635 <table class="memname">
19636 <tr>
19637 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19638 <td>(</td>
19639 <td class="paramtype">const <a class="el" href="classarmnn_1_1_instance_normalization_layer.xhtml">InstanceNormalizationLayer</a> *&#160;</td>
19640 <td class="paramname"></td><td>)</td>
19641 <td></td>
19642 </tr>
19643 </table>
19644</div><div class="memdoc">
19645
19646<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00117">117</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19647
19648</div>
19649</div>
19650<a id="a36f16b97bcb662caaa4eae24ea16cccf"></a>
19651<h2 class="memtitle"><span class="permalink"><a href="#a36f16b97bcb662caaa4eae24ea16cccf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[26/58]</span></h2>
19652
19653<div class="memitem">
19654<div class="memproto">
19655 <table class="memname">
19656 <tr>
19657 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19658 <td>(</td>
19659 <td class="paramtype">const <a class="el" href="classarmnn_1_1_l2_normalization_layer.xhtml">L2NormalizationLayer</a> *&#160;</td>
19660 <td class="paramname"></td><td>)</td>
19661 <td></td>
19662 </tr>
19663 </table>
19664</div><div class="memdoc">
19665
19666<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00118">118</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19667
19668</div>
19669</div>
19670<a id="afb6f9bd4f43118749a0336074bed7b35"></a>
19671<h2 class="memtitle"><span class="permalink"><a href="#afb6f9bd4f43118749a0336074bed7b35">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[27/58]</span></h2>
19672
19673<div class="memitem">
19674<div class="memproto">
19675 <table class="memname">
19676 <tr>
19677 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19678 <td>(</td>
19679 <td class="paramtype">const <a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml">LogSoftmaxLayer</a> *&#160;</td>
19680 <td class="paramname"></td><td>)</td>
19681 <td></td>
19682 </tr>
19683 </table>
19684</div><div class="memdoc">
19685
19686<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00119">119</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19687
19688</div>
19689</div>
19690<a id="a0d08fb555c6d1cba705fd73b71797a28"></a>
19691<h2 class="memtitle"><span class="permalink"><a href="#a0d08fb555c6d1cba705fd73b71797a28">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[28/58]</span></h2>
19692
19693<div class="memitem">
19694<div class="memproto">
19695 <table class="memname">
19696 <tr>
19697 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19698 <td>(</td>
19699 <td class="paramtype">const <a class="el" href="classarmnn_1_1_lstm_layer.xhtml">LstmLayer</a> *&#160;</td>
19700 <td class="paramname"></td><td>)</td>
19701 <td></td>
19702 </tr>
19703 </table>
19704</div><div class="memdoc">
19705
19706<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00120">120</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19707
19708</div>
19709</div>
19710<a id="a6b231c8a547d4030d9a4a1618810c20b"></a>
19711<h2 class="memtitle"><span class="permalink"><a href="#a6b231c8a547d4030d9a4a1618810c20b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[29/58]</span></h2>
19712
19713<div class="memitem">
19714<div class="memproto">
19715 <table class="memname">
19716 <tr>
19717 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19718 <td>(</td>
19719 <td class="paramtype">const <a class="el" href="classarmnn_1_1_maximum_layer.xhtml">MaximumLayer</a> *&#160;</td>
19720 <td class="paramname"></td><td>)</td>
19721 <td></td>
19722 </tr>
19723 </table>
19724</div><div class="memdoc">
19725
19726<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00121">121</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19727
19728</div>
19729</div>
19730<a id="af079ba32db74f53aba1ad19193cd2a4b"></a>
19731<h2 class="memtitle"><span class="permalink"><a href="#af079ba32db74f53aba1ad19193cd2a4b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[30/58]</span></h2>
19732
19733<div class="memitem">
19734<div class="memproto">
19735 <table class="memname">
19736 <tr>
19737 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19738 <td>(</td>
19739 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mean_layer.xhtml">MeanLayer</a> *&#160;</td>
19740 <td class="paramname"></td><td>)</td>
19741 <td></td>
19742 </tr>
19743 </table>
19744</div><div class="memdoc">
19745
19746<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00122">122</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19747
19748</div>
19749</div>
19750<a id="aa17969606f64ea581c28431f2395e653"></a>
19751<h2 class="memtitle"><span class="permalink"><a href="#aa17969606f64ea581c28431f2395e653">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[31/58]</span></h2>
19752
19753<div class="memitem">
19754<div class="memproto">
19755 <table class="memname">
19756 <tr>
19757 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19758 <td>(</td>
19759 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_copy_layer.xhtml">MemCopyLayer</a> *&#160;</td>
19760 <td class="paramname"></td><td>)</td>
19761 <td></td>
19762 </tr>
19763 </table>
19764</div><div class="memdoc">
19765
19766<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00123">123</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19767
19768</div>
19769</div>
19770<a id="a70f3d83f6d1e3918eab895c8083058fa"></a>
19771<h2 class="memtitle"><span class="permalink"><a href="#a70f3d83f6d1e3918eab895c8083058fa">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[32/58]</span></h2>
19772
19773<div class="memitem">
19774<div class="memproto">
19775 <table class="memname">
19776 <tr>
19777 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19778 <td>(</td>
19779 <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_import_layer.xhtml">MemImportLayer</a> *&#160;</td>
19780 <td class="paramname"></td><td>)</td>
19781 <td></td>
19782 </tr>
19783 </table>
19784</div><div class="memdoc">
19785
19786<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00124">124</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19787
19788</div>
19789</div>
19790<a id="a9e8199bdc39f928f694591a41d7aa0c0"></a>
19791<h2 class="memtitle"><span class="permalink"><a href="#a9e8199bdc39f928f694591a41d7aa0c0">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[33/58]</span></h2>
19792
19793<div class="memitem">
19794<div class="memproto">
19795 <table class="memname">
19796 <tr>
19797 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19798 <td>(</td>
19799 <td class="paramtype">const <a class="el" href="classarmnn_1_1_merge_layer.xhtml">MergeLayer</a> *&#160;</td>
19800 <td class="paramname"></td><td>)</td>
19801 <td></td>
19802 </tr>
19803 </table>
19804</div><div class="memdoc">
19805
19806<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00125">125</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19807
19808</div>
19809</div>
19810<a id="ad32a13408ace1c1fa520ed64a2cbe70f"></a>
19811<h2 class="memtitle"><span class="permalink"><a href="#ad32a13408ace1c1fa520ed64a2cbe70f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[34/58]</span></h2>
19812
19813<div class="memitem">
19814<div class="memproto">
19815 <table class="memname">
19816 <tr>
19817 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19818 <td>(</td>
19819 <td class="paramtype">const <a class="el" href="classarmnn_1_1_minimum_layer.xhtml">MinimumLayer</a> *&#160;</td>
19820 <td class="paramname"></td><td>)</td>
19821 <td></td>
19822 </tr>
19823 </table>
19824</div><div class="memdoc">
19825
19826<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00126">126</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19827
19828</div>
19829</div>
19830<a id="a40f1546c0fa69f318eeab4b29cc64b70"></a>
19831<h2 class="memtitle"><span class="permalink"><a href="#a40f1546c0fa69f318eeab4b29cc64b70">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[35/58]</span></h2>
19832
19833<div class="memitem">
19834<div class="memproto">
19835 <table class="memname">
19836 <tr>
19837 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19838 <td>(</td>
19839 <td class="paramtype">const <a class="el" href="classarmnn_1_1_multiplication_layer.xhtml">MultiplicationLayer</a> *&#160;</td>
19840 <td class="paramname"></td><td>)</td>
19841 <td></td>
19842 </tr>
19843 </table>
19844</div><div class="memdoc">
19845
19846<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00127">127</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19847
19848</div>
19849</div>
19850<a id="a140713619ee498a149854a5376b8d072"></a>
19851<h2 class="memtitle"><span class="permalink"><a href="#a140713619ee498a149854a5376b8d072">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[36/58]</span></h2>
19852
19853<div class="memitem">
19854<div class="memproto">
19855 <table class="memname">
19856 <tr>
19857 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19858 <td>(</td>
19859 <td class="paramtype">const <a class="el" href="classarmnn_1_1_normalization_layer.xhtml">NormalizationLayer</a> *&#160;</td>
19860 <td class="paramname"></td><td>)</td>
19861 <td></td>
19862 </tr>
19863 </table>
19864</div><div class="memdoc">
19865
19866<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00128">128</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19867
19868</div>
19869</div>
19870<a id="a7a6e68f66d1d3819640b0f2d46a55fd1"></a>
19871<h2 class="memtitle"><span class="permalink"><a href="#a7a6e68f66d1d3819640b0f2d46a55fd1">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[37/58]</span></h2>
19872
19873<div class="memitem">
19874<div class="memproto">
19875 <table class="memname">
19876 <tr>
19877 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19878 <td>(</td>
19879 <td class="paramtype">const <a class="el" href="classarmnn_1_1_output_layer.xhtml">OutputLayer</a> *&#160;</td>
19880 <td class="paramname"></td><td>)</td>
19881 <td></td>
19882 </tr>
19883 </table>
19884</div><div class="memdoc">
19885
19886<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00129">129</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19887
19888</div>
19889</div>
19890<a id="ab6f1994db909dcc399cb1f8bc50c2d3d"></a>
19891<h2 class="memtitle"><span class="permalink"><a href="#ab6f1994db909dcc399cb1f8bc50c2d3d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[38/58]</span></h2>
19892
19893<div class="memitem">
19894<div class="memproto">
19895 <table class="memname">
19896 <tr>
19897 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19898 <td>(</td>
19899 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pad_layer.xhtml">PadLayer</a> *&#160;</td>
19900 <td class="paramname"></td><td>)</td>
19901 <td></td>
19902 </tr>
19903 </table>
19904</div><div class="memdoc">
19905
19906<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00130">130</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19907
19908</div>
19909</div>
19910<a id="a1e6b17606926b8f69dbeda7f7ff1df95"></a>
19911<h2 class="memtitle"><span class="permalink"><a href="#a1e6b17606926b8f69dbeda7f7ff1df95">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[39/58]</span></h2>
19912
19913<div class="memitem">
19914<div class="memproto">
19915 <table class="memname">
19916 <tr>
19917 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19918 <td>(</td>
19919 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permute_layer.xhtml">PermuteLayer</a> *&#160;</td>
19920 <td class="paramname"></td><td>)</td>
19921 <td></td>
19922 </tr>
19923 </table>
19924</div><div class="memdoc">
19925
19926<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00131">131</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19927
19928</div>
19929</div>
19930<a id="ade84059b48b38da3a233bed287864c5b"></a>
19931<h2 class="memtitle"><span class="permalink"><a href="#ade84059b48b38da3a233bed287864c5b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[40/58]</span></h2>
19932
19933<div class="memitem">
19934<div class="memproto">
19935 <table class="memname">
19936 <tr>
19937 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19938 <td>(</td>
19939 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pooling2d_layer.xhtml">Pooling2dLayer</a> *&#160;</td>
19940 <td class="paramname"></td><td>)</td>
19941 <td></td>
19942 </tr>
19943 </table>
19944</div><div class="memdoc">
19945
19946<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00132">132</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19947
19948</div>
19949</div>
19950<a id="a6e5eaa19ff232f11daa9a1c6caccf7fe"></a>
19951<h2 class="memtitle"><span class="permalink"><a href="#a6e5eaa19ff232f11daa9a1c6caccf7fe">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[41/58]</span></h2>
19952
19953<div class="memitem">
19954<div class="memproto">
19955 <table class="memname">
19956 <tr>
19957 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19958 <td>(</td>
19959 <td class="paramtype">const <a class="el" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a> *&#160;</td>
19960 <td class="paramname"></td><td>)</td>
19961 <td></td>
19962 </tr>
19963 </table>
19964</div><div class="memdoc">
19965
19966<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00133">133</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19967
19968</div>
19969</div>
19970<a id="a58a5defa35b12773a97760efadffef4f"></a>
19971<h2 class="memtitle"><span class="permalink"><a href="#a58a5defa35b12773a97760efadffef4f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[42/58]</span></h2>
19972
19973<div class="memitem">
19974<div class="memproto">
19975 <table class="memname">
19976 <tr>
19977 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19978 <td>(</td>
19979 <td class="paramtype">const <a class="el" href="classarmnn_1_1_prelu_layer.xhtml">PreluLayer</a> *&#160;</td>
19980 <td class="paramname"></td><td>)</td>
19981 <td></td>
19982 </tr>
19983 </table>
19984</div><div class="memdoc">
19985
19986<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00134">134</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
19987
19988</div>
19989</div>
19990<a id="aaaaf64c0888ab25bfae770bd4c2ec34b"></a>
19991<h2 class="memtitle"><span class="permalink"><a href="#aaaaf64c0888ab25bfae770bd4c2ec34b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[43/58]</span></h2>
19992
19993<div class="memitem">
19994<div class="memproto">
19995 <table class="memname">
19996 <tr>
19997 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
19998 <td>(</td>
19999 <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantize_layer.xhtml">QuantizeLayer</a> *&#160;</td>
20000 <td class="paramname"></td><td>)</td>
20001 <td></td>
20002 </tr>
20003 </table>
20004</div><div class="memdoc">
20005
20006<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00135">135</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20007
20008</div>
20009</div>
20010<a id="a31bcd6f755df954a4d7b020a09499105"></a>
20011<h2 class="memtitle"><span class="permalink"><a href="#a31bcd6f755df954a4d7b020a09499105">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[44/58]</span></h2>
20012
20013<div class="memitem">
20014<div class="memproto">
20015 <table class="memname">
20016 <tr>
20017 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20018 <td>(</td>
20019 <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.xhtml">QuantizedLstmLayer</a> *&#160;</td>
20020 <td class="paramname"></td><td>)</td>
20021 <td></td>
20022 </tr>
20023 </table>
20024</div><div class="memdoc">
20025
20026<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00136">136</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20027
20028</div>
20029</div>
20030<a id="a6a17f58da2071720e3003a56a092aab3"></a>
20031<h2 class="memtitle"><span class="permalink"><a href="#a6a17f58da2071720e3003a56a092aab3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[45/58]</span></h2>
20032
20033<div class="memitem">
20034<div class="memproto">
20035 <table class="memname">
20036 <tr>
20037 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20038 <td>(</td>
20039 <td class="paramtype">const <a class="el" href="classarmnn_1_1_reshape_layer.xhtml">ReshapeLayer</a> *&#160;</td>
20040 <td class="paramname"></td><td>)</td>
20041 <td></td>
20042 </tr>
20043 </table>
20044</div><div class="memdoc">
20045
20046<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00137">137</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20047
20048</div>
20049</div>
20050<a id="aafc370ea363f0565c3a8bced1e37c79e"></a>
20051<h2 class="memtitle"><span class="permalink"><a href="#aafc370ea363f0565c3a8bced1e37c79e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[46/58]</span></h2>
20052
20053<div class="memitem">
20054<div class="memproto">
20055 <table class="memname">
20056 <tr>
20057 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20058 <td>(</td>
20059 <td class="paramtype">const <a class="el" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a> *&#160;</td>
20060 <td class="paramname"></td><td>)</td>
20061 <td></td>
20062 </tr>
20063 </table>
20064</div><div class="memdoc">
20065
20066<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00138">138</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20067
20068</div>
20069</div>
20070<a id="a3cbbb4e00618b072ace46751e660a295"></a>
20071<h2 class="memtitle"><span class="permalink"><a href="#a3cbbb4e00618b072ace46751e660a295">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[47/58]</span></h2>
20072
20073<div class="memitem">
20074<div class="memproto">
20075 <table class="memname">
20076 <tr>
20077 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20078 <td>(</td>
20079 <td class="paramtype">const <a class="el" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a> *&#160;</td>
20080 <td class="paramname"></td><td>)</td>
20081 <td></td>
20082 </tr>
20083 </table>
20084</div><div class="memdoc">
20085
20086<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00139">139</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20087
20088</div>
20089</div>
20090<a id="af6af4b51e08d3e811620811ab5e0cd2d"></a>
20091<h2 class="memtitle"><span class="permalink"><a href="#af6af4b51e08d3e811620811ab5e0cd2d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[48/58]</span></h2>
20092
20093<div class="memitem">
20094<div class="memproto">
20095 <table class="memname">
20096 <tr>
20097 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20098 <td>(</td>
20099 <td class="paramtype">const <a class="el" href="classarmnn_1_1_softmax_layer.xhtml">SoftmaxLayer</a> *&#160;</td>
20100 <td class="paramname"></td><td>)</td>
20101 <td></td>
20102 </tr>
20103 </table>
20104</div><div class="memdoc">
20105
20106<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00140">140</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20107
20108</div>
20109</div>
20110<a id="ac2d31ced5505a9d05287f5b71d25e34a"></a>
20111<h2 class="memtitle"><span class="permalink"><a href="#ac2d31ced5505a9d05287f5b71d25e34a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[49/58]</span></h2>
20112
20113<div class="memitem">
20114<div class="memproto">
20115 <table class="memname">
20116 <tr>
20117 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20118 <td>(</td>
20119 <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">SpaceToBatchNdLayer</a> *&#160;</td>
20120 <td class="paramname"></td><td>)</td>
20121 <td></td>
20122 </tr>
20123 </table>
20124</div><div class="memdoc">
20125
20126<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00141">141</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20127
20128</div>
20129</div>
20130<a id="a81c31de4f532a95ab85ed6d999029332"></a>
20131<h2 class="memtitle"><span class="permalink"><a href="#a81c31de4f532a95ab85ed6d999029332">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[50/58]</span></h2>
20132
20133<div class="memitem">
20134<div class="memproto">
20135 <table class="memname">
20136 <tr>
20137 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20138 <td>(</td>
20139 <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_depth_layer.xhtml">SpaceToDepthLayer</a> *&#160;</td>
20140 <td class="paramname"></td><td>)</td>
20141 <td></td>
20142 </tr>
20143 </table>
20144</div><div class="memdoc">
20145
20146<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00142">142</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20147
20148</div>
20149</div>
20150<a id="a24d3abbfc1ed81df673452c7148aa0cc"></a>
20151<h2 class="memtitle"><span class="permalink"><a href="#a24d3abbfc1ed81df673452c7148aa0cc">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[51/58]</span></h2>
20152
20153<div class="memitem">
20154<div class="memproto">
20155 <table class="memname">
20156 <tr>
20157 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20158 <td>(</td>
20159 <td class="paramtype">const <a class="el" href="classarmnn_1_1_splitter_layer.xhtml">SplitterLayer</a> *&#160;</td>
20160 <td class="paramname"></td><td>)</td>
20161 <td></td>
20162 </tr>
20163 </table>
20164</div><div class="memdoc">
20165
20166<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00143">143</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20167
20168</div>
20169</div>
20170<a id="ab676aab9119d1417764849099a099ecf"></a>
20171<h2 class="memtitle"><span class="permalink"><a href="#ab676aab9119d1417764849099a099ecf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[52/58]</span></h2>
20172
20173<div class="memitem">
20174<div class="memproto">
20175 <table class="memname">
20176 <tr>
20177 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20178 <td>(</td>
20179 <td class="paramtype">const <a class="el" href="classarmnn_1_1_stack_layer.xhtml">StackLayer</a> *&#160;</td>
20180 <td class="paramname"></td><td>)</td>
20181 <td></td>
20182 </tr>
20183 </table>
20184</div><div class="memdoc">
20185
20186<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00144">144</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20187
20188</div>
20189</div>
20190<a id="a1b5ff142f1d4420a8d83d9bcff1bfff4"></a>
20191<h2 class="memtitle"><span class="permalink"><a href="#a1b5ff142f1d4420a8d83d9bcff1bfff4">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[53/58]</span></h2>
20192
20193<div class="memitem">
20194<div class="memproto">
20195 <table class="memname">
20196 <tr>
20197 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20198 <td>(</td>
20199 <td class="paramtype">const <a class="el" href="classarmnn_1_1_stand_in_layer.xhtml">StandInLayer</a> *&#160;</td>
20200 <td class="paramname"></td><td>)</td>
20201 <td></td>
20202 </tr>
20203 </table>
20204</div><div class="memdoc">
20205
20206<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00145">145</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20207
20208</div>
20209</div>
20210<a id="ad640080ff4ea3e4f9ff05823e32ce15f"></a>
20211<h2 class="memtitle"><span class="permalink"><a href="#ad640080ff4ea3e4f9ff05823e32ce15f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[54/58]</span></h2>
20212
20213<div class="memitem">
20214<div class="memproto">
20215 <table class="memname">
20216 <tr>
20217 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20218 <td>(</td>
20219 <td class="paramtype">const <a class="el" href="classarmnn_1_1_strided_slice_layer.xhtml">StridedSliceLayer</a> *&#160;</td>
20220 <td class="paramname"></td><td>)</td>
20221 <td></td>
20222 </tr>
20223 </table>
20224</div><div class="memdoc">
20225
20226<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00146">146</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20227
20228</div>
20229</div>
20230<a id="a9cc235c8c5e2ef3d2788cd558d676b0a"></a>
20231<h2 class="memtitle"><span class="permalink"><a href="#a9cc235c8c5e2ef3d2788cd558d676b0a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[55/58]</span></h2>
20232
20233<div class="memitem">
20234<div class="memproto">
20235 <table class="memname">
20236 <tr>
20237 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20238 <td>(</td>
20239 <td class="paramtype">const <a class="el" href="classarmnn_1_1_subtraction_layer.xhtml">SubtractionLayer</a> *&#160;</td>
20240 <td class="paramname"></td><td>)</td>
20241 <td></td>
20242 </tr>
20243 </table>
20244</div><div class="memdoc">
20245
20246<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00147">147</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20247
20248</div>
20249</div>
20250<a id="a110b9fdf7f17a1d065cd59ebc4bb76f7"></a>
20251<h2 class="memtitle"><span class="permalink"><a href="#a110b9fdf7f17a1d065cd59ebc4bb76f7">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[56/58]</span></h2>
20252
20253<div class="memitem">
20254<div class="memproto">
20255 <table class="memname">
20256 <tr>
20257 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20258 <td>(</td>
20259 <td class="paramtype">const <a class="el" href="classarmnn_1_1_switch_layer.xhtml">SwitchLayer</a> *&#160;</td>
20260 <td class="paramname"></td><td>)</td>
20261 <td></td>
20262 </tr>
20263 </table>
20264</div><div class="memdoc">
20265
20266<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00148">148</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20267
20268</div>
20269</div>
20270<a id="af44c8ebb1b55f4c42cc301d0bf030aa5"></a>
20271<h2 class="memtitle"><span class="permalink"><a href="#af44c8ebb1b55f4c42cc301d0bf030aa5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[57/58]</span></h2>
20272
20273<div class="memitem">
20274<div class="memproto">
20275 <table class="memname">
20276 <tr>
20277 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20278 <td>(</td>
20279 <td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_layer.xhtml">TransposeLayer</a> *&#160;</td>
20280 <td class="paramname"></td><td>)</td>
20281 <td></td>
20282 </tr>
20283 </table>
20284</div><div class="memdoc">
20285
20286<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00149">149</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20287
20288</div>
20289</div>
20290<a id="a60af5a86cf0261d0bdf4312736ab4461"></a>
20291<h2 class="memtitle"><span class="permalink"><a href="#a60af5a86cf0261d0bdf4312736ab4461">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[58/58]</span></h2>
20292
20293<div class="memitem">
20294<div class="memproto">
20295 <table class="memname">
20296 <tr>
20297 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
20298 <td>(</td>
20299 <td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">TransposeConvolution2dLayer</a> *&#160;</td>
20300 <td class="paramname"></td><td>)</td>
20301 <td></td>
20302 </tr>
20303 </table>
20304</div><div class="memdoc">
20305
20306<p class="definition">Definition at line <a class="el" href="_layers_fwd_8hpp_source.xhtml#l00150">150</a> of file <a class="el" href="_layers_fwd_8hpp_source.xhtml">LayersFwd.hpp</a>.</p>
20307
20308</div>
20309</div>
20310<a id="a71f2cc06b097cb5c4f0a1f48130a823b"></a>
20311<h2 class="memtitle"><span class="permalink"><a href="#a71f2cc06b097cb5c4f0a1f48130a823b">&#9670;&nbsp;</a></span>LevelToString()</h2>
20312
20313<div class="memitem">
20314<div class="memproto">
20315<table class="mlabels">
20316 <tr>
20317 <td class="mlabels-left">
20318 <table class="memname">
20319 <tr>
20320 <td class="memname">std::string armnn::LevelToString </td>
20321 <td>(</td>
20322 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
20323 <td class="paramname"><em>level</em></td><td>)</td>
20324 <td></td>
20325 </tr>
20326 </table>
20327 </td>
20328 <td class="mlabels-right">
20329<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20330 </tr>
20331</table>
20332</div><div class="memdoc">
20333
20334<p class="definition">Definition at line <a class="el" href="_logging_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_logging_8hpp_source.xhtml">Logging.hpp</a>.</p>
20335
20336<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
20337
20338<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.xhtml#l00056">ScopedRecord::ScopedRecord()</a>.</p>
20339<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">switch</span>(level)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Trace&quot;</span>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Debug&quot;</span>;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Info&quot;</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Warning&quot;</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Error&quot;</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Fatal&quot;</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;Log&quot;</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.xhtml#l00020">Debug.cpp:20</a></div></div>
20340</div><!-- fragment -->
20341</div>
20342</div>
20343<a id="ac52e04c0e349e25bcdaa72c27395ef8f"></a>
20344<h2 class="memtitle"><span class="permalink"><a href="#ac52e04c0e349e25bcdaa72c27395ef8f">&#9670;&nbsp;</a></span>LogSoftmax()</h2>
20345
20346<div class="memitem">
20347<div class="memproto">
20348 <table class="memname">
20349 <tr>
20350 <td class="memname">void LogSoftmax </td>
20351 <td>(</td>
20352 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
20353 <td class="paramname"><em>input</em>, </td>
20354 </tr>
20355 <tr>
20356 <td class="paramkey"></td>
20357 <td></td>
20358 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
20359 <td class="paramname"><em>output</em>, </td>
20360 </tr>
20361 <tr>
20362 <td class="paramkey"></td>
20363 <td></td>
20364 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20365 <td class="paramname"><em>inputInfo</em>, </td>
20366 </tr>
20367 <tr>
20368 <td class="paramkey"></td>
20369 <td></td>
20370 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;&#160;</td>
20371 <td class="paramname"><em>descriptor</em>&#160;</td>
20372 </tr>
20373 <tr>
20374 <td></td>
20375 <td>)</td>
20376 <td></td><td></td>
20377 </tr>
20378 </table>
20379</div><div class="memdoc">
20380
20381<p class="definition">Definition at line <a class="el" href="_log_softmax_8cpp_source.xhtml#l00030">30</a> of file <a class="el" href="_log_softmax_8cpp_source.xhtml">LogSoftmax.cpp</a>.</p>
20382
20383<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00138">SoftmaxDescriptor::m_Axis</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00136">SoftmaxDescriptor::m_Beta</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
20384
20385<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01399">BOOST_AUTO_TEST_CASE()</a>.</p>
20386<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDimensions = inputInfo.GetNumDimensions();</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="keywordtype">bool</span> axisIsValid = ValidateAxis(descriptor.m_Axis, numDimensions);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; BOOST_ASSERT_MSG(axisIsValid,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="stringliteral">&quot;Axis index is not in range [-numDimensions, numDimensions).&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(axisIsValid);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = descriptor.m_Axis &lt; 0 ?</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; numDimensions - <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(std::abs(descriptor.m_Axis)) :</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(descriptor.m_Axis);</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"> 46</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; uAxis + 1,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; input[outer * axisSize * innerSize + inner];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">float</span> maxValue = input.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 1u; i &lt; axisSize; ++i)</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; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; maxValue = std::max(maxValue, input.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">// Compute sum</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; input[(outer * axisSize + i) * innerSize + inner];</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; sum += std::exp((input.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Compute log sum</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> logSum = std::log(sum);</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">// Compute result</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; axisSize; ++i)</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = (outer * axisSize + i) * innerSize + inner;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; input [index];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; output[index];</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; output.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>((input.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * descriptor.m_Beta - logSum);</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; }</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="ttc" id="namespacearmnn_utils_xhtml_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00113">TensorUtils.cpp:113</a></div></div>
20387<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
20388<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>
20389<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
20390<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
20391</div><!-- fragment -->
20392</div>
20393</div>
20394<a id="a27ecdfeeea12de313f2b97d309a35d9d"></a>
20395<h2 class="memtitle"><span class="permalink"><a href="#a27ecdfeeea12de313f2b97d309a35d9d">&#9670;&nbsp;</a></span>LowerString()</h2>
20396
20397<div class="memitem">
20398<div class="memproto">
20399 <table class="memname">
20400 <tr>
20401 <td class="memname">std::string armnn::LowerString </td>
20402 <td>(</td>
20403 <td class="paramtype">std::string&#160;</td>
20404 <td class="paramname"><em>value</em></td><td>)</td>
20405 <td></td>
20406 </tr>
20407 </table>
20408</div><div class="memdoc">
20409
20410<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00061">61</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
20411<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; std::transform(value.begin(), value.end(), value.begin(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c){ <span class="keywordflow">return</span> std::tolower(c); });</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
20412</div>
20413</div>
20414<a id="a1545cb162c5a64d75d9c0c05e8ea387c"></a>
20415<h2 class="memtitle"><span class="permalink"><a href="#a1545cb162c5a64d75d9c0c05e8ea387c">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[1/2]</span></h2>
20416
20417<div class="memitem">
20418<div class="memproto">
20419<table class="mlabels">
20420 <tr>
20421 <td class="mlabels-left">
20422 <table class="memname">
20423 <tr>
20424 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt;T&gt; &gt; armnn::MakeDecoder </td>
20425 <td>(</td>
20426 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20427 <td class="paramname"><em>info</em>, </td>
20428 </tr>
20429 <tr>
20430 <td class="paramkey"></td>
20431 <td></td>
20432 <td class="paramtype">const void *&#160;</td>
20433 <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
20434 </tr>
20435 <tr>
20436 <td></td>
20437 <td>)</td>
20438 <td></td><td></td>
20439 </tr>
20440 </table>
20441 </td>
20442 <td class="mlabels-right">
20443<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20444 </tr>
20445</table>
20446</div><div class="memdoc">
20447
20448<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.xhtml#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.xhtml">Decoders.hpp</a>.</p>
20449
20450<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
20451<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</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; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</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; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</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">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::BFloat16:</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">return</span> std::make_unique&lt;BFloat16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>*<span class="keyword">&gt;</span>(data));</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; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</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; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</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"> 121</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; params.second,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; params.first);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
20452<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
20453<div class="ttc" id="namespacearmnn_utils_xhtml_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00152">TensorUtils.cpp:152</a></div></div>
20454<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
20455<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
20456<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20457<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
20458</div><!-- fragment -->
20459</div>
20460</div>
20461<a id="adb59a379c467b6d48874e946183b4d21"></a>
20462<h2 class="memtitle"><span class="permalink"><a href="#adb59a379c467b6d48874e946183b4d21">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[2/2]</span></h2>
20463
20464<div class="memitem">
20465<div class="memproto">
20466<table class="mlabels">
20467 <tr>
20468 <td class="mlabels-left">
20469 <table class="memname">
20470 <tr>
20471 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt;float&gt; &gt; armnn::MakeDecoder </td>
20472 <td>(</td>
20473 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20474 <td class="paramname"><em>info</em>, </td>
20475 </tr>
20476 <tr>
20477 <td class="paramkey"></td>
20478 <td></td>
20479 <td class="paramtype">const void *&#160;</td>
20480 <td class="paramname"><em>data</em>&#160;</td>
20481 </tr>
20482 <tr>
20483 <td></td>
20484 <td>)</td>
20485 <td></td><td></td>
20486 </tr>
20487 </table>
20488 </td>
20489 <td class="mlabels-right">
20490<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20491 </tr>
20492</table>
20493</div><div class="memdoc">
20494
20495<p class="definition">Definition at line <a class="el" href="_decoders_8hpp_source.xhtml#l00070">70</a> of file <a class="el" href="_decoders_8hpp_source.xhtml">Decoders.hpp</a>.</p>
20496
20497<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
20498<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</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; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</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; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; params.second,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; params.first);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmS8:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymmS8Decoder&gt;(</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">case</span> DataType::QAsymmU8:</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Decoder&gt;(</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS16:</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">return</span> std::make_unique&lt;QSymm16Decoder&gt;(</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> DataType::BFloat16:</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">return</span> std::make_unique&lt;BFloat16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>*<span class="keyword">&gt;</span>(data));</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; <span class="keywordflow">case</span> DataType::Float16:</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> DataType::Float32:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Decoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> DataType::Signed32:</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; <span class="keywordflow">return</span> MakeSigned32Decoder(info, data);</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"> 121</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisDecoder&gt;(</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; params.second,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; params.first);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Decoder&gt;(</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</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; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported Data Type!&quot;</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
20499<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
20500<div class="ttc" id="namespacearmnn_utils_xhtml_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00152">TensorUtils.cpp:152</a></div></div>
20501<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
20502<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
20503<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20504<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
20505</div><!-- fragment -->
20506</div>
20507</div>
20508<a id="a56867cc5245724ab56953604b1eec9ee"></a>
20509<h2 class="memtitle"><span class="permalink"><a href="#a56867cc5245724ab56953604b1eec9ee">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[1/3]</span></h2>
20510
20511<div class="memitem">
20512<div class="memproto">
20513<table class="mlabels">
20514 <tr>
20515 <td class="mlabels-left">
20516 <table class="memname">
20517 <tr>
20518 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt;T&gt; &gt; armnn::MakeEncoder </td>
20519 <td>(</td>
20520 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20521 <td class="paramname"><em>info</em>, </td>
20522 </tr>
20523 <tr>
20524 <td class="paramkey"></td>
20525 <td></td>
20526 <td class="paramtype">void *&#160;</td>
20527 <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
20528 </tr>
20529 <tr>
20530 <td></td>
20531 <td>)</td>
20532 <td></td><td></td>
20533 </tr>
20534 </table>
20535 </td>
20536 <td class="mlabels-right">
20537<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20538 </tr>
20539</table>
20540</div><div class="memdoc">
20541
20542<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.xhtml">Encoders.hpp</a>.</p>
20543
20544<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
20545<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</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; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</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> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</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> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;BFloat16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="classarmnn_1_1_b_float16.xhtml">armnn::BFloat16</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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"> 90</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
20546<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
20547<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
20548<div class="ttc" id="classarmnn_1_1_b_float16_xhtml"><div class="ttname"><a href="classarmnn_1_1_b_float16.xhtml">armnn::BFloat16</a></div><div class="ttdef"><b>Definition:</b> <a href="_b_float16_8hpp_source.xhtml#l00014">BFloat16.hpp:14</a></div></div>
20549<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
20550<div class="ttc" id="namespacearmnn_utils_xhtml_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00152">TensorUtils.cpp:152</a></div></div>
20551<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
20552<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
20553<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
20554<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
20555<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
20556<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20557<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
20558<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
20559</div><!-- fragment -->
20560</div>
20561</div>
20562<a id="a363da7c8d642ea382e3bd2f1c6283d52"></a>
20563<h2 class="memtitle"><span class="permalink"><a href="#a363da7c8d642ea382e3bd2f1c6283d52">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[2/3]</span></h2>
20564
20565<div class="memitem">
20566<div class="memproto">
20567<table class="mlabels">
20568 <tr>
20569 <td class="mlabels-left">
20570 <table class="memname">
20571 <tr>
20572 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt;float&gt; &gt; armnn::MakeEncoder </td>
20573 <td>(</td>
20574 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20575 <td class="paramname"><em>info</em>, </td>
20576 </tr>
20577 <tr>
20578 <td class="paramkey"></td>
20579 <td></td>
20580 <td class="paramtype">void *&#160;</td>
20581 <td class="paramname"><em>data</em>&#160;</td>
20582 </tr>
20583 <tr>
20584 <td></td>
20585 <td>)</td>
20586 <td></td><td></td>
20587 </tr>
20588 </table>
20589 </td>
20590 <td class="mlabels-right">
20591<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20592 </tr>
20593</table>
20594</div><div class="memdoc">
20595
20596<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_encoders_8hpp_source.xhtml">Encoders.hpp</a>.</p>
20597
20598<p class="reference">References <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00152">armnnUtils::GetPerAxisParams()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00232">TensorInfo::HasPerAxisQuantization()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
20599<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; params.second,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; params.first);</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; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a>:</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> std::make_unique&lt;QASymmS8Encoder&gt;(</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QASymm8Encoder&gt;(</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> DataType::QSymmS8:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.HasPerAxisQuantization())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::pair&lt;unsigned int, std::vector&lt;float&gt;&gt; params = <a class="code" href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a>(info);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymm8PerAxisEncoder&gt;(</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; params.second,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; params.first);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;QSymmS8Encoder&gt;(</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static_cast&lt;</span>int8_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a>:</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> std::make_unique&lt;QSymm16Encoder&gt;(</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">static_cast&lt;</span>int16_t*<span class="keyword">&gt;</span>(data),</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(),</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</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="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Int32Encoder&gt;(<span class="keyword">static_cast&lt;</span>int32_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a>:</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; <span class="keywordflow">return</span> std::make_unique&lt;BFloat16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="classarmnn_1_1_b_float16.xhtml">armnn::BFloat16</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a>:</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float16Encoder&gt;(<span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;Float32Encoder&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span>(data));</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"> 90</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Unsupported target Data Type!&quot;</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">break</span>;</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; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
20600<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
20601<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
20602<div class="ttc" id="classarmnn_1_1_b_float16_xhtml"><div class="ttname"><a href="classarmnn_1_1_b_float16.xhtml">armnn::BFloat16</a></div><div class="ttdef"><b>Definition:</b> <a href="_b_float16_8hpp_source.xhtml#l00014">BFloat16.hpp:14</a></div></div>
20603<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
20604<div class="ttc" id="namespacearmnn_utils_xhtml_a1826e433f7e6817976a8175b4ef8296c"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a1826e433f7e6817976a8175b4ef8296c">armnnUtils::GetPerAxisParams</a></div><div class="ttdeci">std::pair&lt; unsigned int, std::vector&lt; float &gt; &gt; GetPerAxisParams(const armnn::TensorInfo &amp;info)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00152">TensorUtils.cpp:152</a></div></div>
20605<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
20606<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
20607<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
20608<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
20609<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
20610<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20611<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
20612<div class="ttc" id="namespacearmnn_xhtml_a0f38fa92b2468d5378258a2b074c1a31"><div class="ttname"><a href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">armnn::Half</a></div><div class="ttdeci">half_float::half Half</div><div class="ttdef"><b>Definition:</b> <a href="_half_8hpp_source.xhtml#l00016">Half.hpp:16</a></div></div>
20613</div><!-- fragment -->
20614</div>
20615</div>
20616<a id="a6fcd01a9cdee158d3022ad089c27c078"></a>
20617<h2 class="memtitle"><span class="permalink"><a href="#a6fcd01a9cdee158d3022ad089c27c078">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[3/3]</span></h2>
20618
20619<div class="memitem">
20620<div class="memproto">
20621<table class="mlabels">
20622 <tr>
20623 <td class="mlabels-left">
20624 <table class="memname">
20625 <tr>
20626 <td class="memname">std::unique_ptr&lt;<a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt;bool&gt; &gt; armnn::MakeEncoder </td>
20627 <td>(</td>
20628 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20629 <td class="paramname"><em>info</em>, </td>
20630 </tr>
20631 <tr>
20632 <td class="paramkey"></td>
20633 <td></td>
20634 <td class="paramtype">void *&#160;</td>
20635 <td class="paramname"><em>data</em>&#160;</td>
20636 </tr>
20637 <tr>
20638 <td></td>
20639 <td>)</td>
20640 <td></td><td></td>
20641 </tr>
20642 </table>
20643 </td>
20644 <td class="mlabels-right">
20645<span class="mlabels"><span class="mlabel">inline</span></span> </td>
20646 </tr>
20647</table>
20648</div><div class="memdoc">
20649
20650<p class="definition">Definition at line <a class="el" href="_encoders_8hpp_source.xhtml#l00100">100</a> of file <a class="el" href="_encoders_8hpp_source.xhtml">Encoders.hpp</a>.</p>
20651
20652<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>.</p>
20653<div class="fragment"><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; <span class="keywordflow">switch</span>(<a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetDataType())</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a>:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> std::make_unique&lt;BooleanEncoder&gt;(<span class="keyword">static_cast&lt;</span>uint8_t*<span class="keyword">&gt;</span>(data));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; BOOST_ASSERT_MSG(<span class="keyword">false</span>, <span class="stringliteral">&quot;Cannot encode from boolean. Not supported target Data Type!&quot;</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</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">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">armnn::DataType::Boolean</a></div></div>
20654<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
20655</div><!-- fragment -->
20656</div>
20657</div>
20658<a id="ae0ae21bef03ed19f252c72c660e571a4"></a>
20659<h2 class="memtitle"><span class="permalink"><a href="#ae0ae21bef03ed19f252c72c660e571a4">&#9670;&nbsp;</a></span>MakeInfo()</h2>
20660
20661<div class="memitem">
20662<div class="memproto">
20663 <table class="memname">
20664 <tr>
20665 <td class="memname">arm_compute::DetectionPostProcessLayerInfo armnn::MakeInfo </td>
20666 <td>(</td>
20667 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
20668 <td class="paramname"><em>desc</em></td><td>)</td>
20669 <td></td>
20670 </tr>
20671 </table>
20672</div><div class="memdoc">
20673
20674<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml">NeonDetectionPostProcessWorkload.cpp</a>.</p>
20675
20676<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00531">DetectionPostProcessDescriptor::m_DetectionsPerClass</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00529">DetectionPostProcessDescriptor::m_MaxClassesPerDetection</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00527">DetectionPostProcessDescriptor::m_MaxDetections</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00535">DetectionPostProcessDescriptor::m_NmsIouThreshold</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00533">DetectionPostProcessDescriptor::m_NmsScoreThreshold</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00537">DetectionPostProcessDescriptor::m_NumClasses</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00539">DetectionPostProcessDescriptor::m_UseRegularNms</a>.</p>
20677
20678<p class="reference">Referenced by <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00033">NeonDetectionPostProcessValidate()</a>.</p>
20679<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordflow">return</span> arm_compute::DetectionPostProcessLayerInfo(desc.m_MaxDetections,</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; desc.m_MaxClassesPerDetection,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; desc.m_NmsScoreThreshold,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; desc.m_NmsIouThreshold,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; desc.m_NumClasses,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; { desc.m_ScaleX,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; desc.m_ScaleY,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_ScaleW,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; desc.m_ScaleH },</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; desc.m_UseRegularNms,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; desc.m_DetectionsPerClass);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
20680</div>
20681</div>
20682<a id="aa7427025a851113a492de0b68b23d22a"></a>
20683<h2 class="memtitle"><span class="permalink"><a href="#aa7427025a851113a492de0b68b23d22a">&#9670;&nbsp;</a></span>MakeOptimizations()</h2>
20684
20685<div class="memitem">
20686<div class="memproto">
20687 <table class="memname">
20688 <tr>
20689 <td class="memname"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> armnn::MakeOptimizations </td>
20690 <td>(</td>
20691 <td class="paramtype">Args &amp;&amp;...&#160;</td>
20692 <td class="paramname"><em>args</em></td><td>)</td>
20693 <td></td>
20694 </tr>
20695 </table>
20696</div><div class="memdoc">
20697
20698<p class="definition">Definition at line <a class="el" href="_optimizer_8hpp_source.xhtml#l00043">43</a> of file <a class="el" href="_optimizer_8hpp_source.xhtml">Optimizer.hpp</a>.</p>
20699
20700<p class="reference">References <a class="el" href="_optimizer_8hpp_source.xhtml#l00030">Append()</a>.</p>
20701
20702<p class="reference">Referenced by <a class="el" href="_convert_constants_float_to_half_tests_8cpp_source.xhtml#l00018">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
20703<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Optimizer::Optimizations optimizations;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="namespacearmnn.xhtml#a0c8a28b71e49c04596289ff281e58f1a">Append</a>(optimizations, std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> optimizations;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a0c8a28b71e49c04596289ff281e58f1a"><div class="ttname"><a href="namespacearmnn.xhtml#a0c8a28b71e49c04596289ff281e58f1a">armnn::Append</a></div><div class="ttdeci">void Append(Optimizer::Optimizations &amp;optimizations, Front &amp;&amp;front, Others &amp;&amp;... others)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.xhtml#l00036">Optimizer.hpp:36</a></div></div>
20704</div><!-- fragment -->
20705</div>
20706</div>
20707<a id="a77780137c47f528921f6537447060f05"></a>
20708<h2 class="memtitle"><span class="permalink"><a href="#a77780137c47f528921f6537447060f05">&#9670;&nbsp;</a></span>MakeOptional()</h2>
20709
20710<div class="memitem">
20711<div class="memproto">
20712 <table class="memname">
20713 <tr>
20714 <td class="memname"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;T&gt; armnn::MakeOptional </td>
20715 <td>(</td>
20716 <td class="paramtype">Args &amp;&amp;...&#160;</td>
20717 <td class="paramname"><em>args</em></td><td>)</td>
20718 <td></td>
20719 </tr>
20720 </table>
20721</div><div class="memdoc">
20722
20723<p>Utility template that constructs an object of type T in-place and wraps it inside an Optional&lt;T&gt; object. </p>
20724
20725<p class="definition">Definition at line <a class="el" href="_optional_8hpp_source.xhtml#l00304">304</a> of file <a class="el" href="_optional_8hpp_source.xhtml">Optional.hpp</a>.</p>
20726
20727<p class="reference">References <a class="el" href="_optional_8hpp_source.xhtml#l00041">CONSTRUCT_IN_PLACE</a>.</p>
20728<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> Optional&lt;T&gt;(<a class="code" href="_optional_8hpp.xhtml#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a>, std::forward&lt;Args&gt;(args)...);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="ttc" id="_optional_8hpp_xhtml_acbec11f88a308826fa811f370d363a4a"><div class="ttname"><a href="_optional_8hpp.xhtml#acbec11f88a308826fa811f370d363a4a">CONSTRUCT_IN_PLACE</a></div><div class="ttdeci">#define CONSTRUCT_IN_PLACE</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00041">Optional.hpp:41</a></div></div>
20729</div><!-- fragment -->
20730</div>
20731</div>
20732<a id="a165ae372a7f67cad64ef3395d30122ce"></a>
20733<h2 class="memtitle"><span class="permalink"><a href="#a165ae372a7f67cad64ef3395d30122ce">&#9670;&nbsp;</a></span>Mean()</h2>
20734
20735<div class="memitem">
20736<div class="memproto">
20737 <table class="memname">
20738 <tr>
20739 <td class="memname">void Mean </td>
20740 <td>(</td>
20741 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
20742 <td class="paramname"><em>inputInfo</em>, </td>
20743 </tr>
20744 <tr>
20745 <td class="paramkey"></td>
20746 <td></td>
20747 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
20748 <td class="paramname"><em>outputInfo</em>, </td>
20749 </tr>
20750 <tr>
20751 <td class="paramkey"></td>
20752 <td></td>
20753 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
20754 <td class="paramname"><em>axis</em>, </td>
20755 </tr>
20756 <tr>
20757 <td class="paramkey"></td>
20758 <td></td>
20759 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
20760 <td class="paramname"><em>input</em>, </td>
20761 </tr>
20762 <tr>
20763 <td class="paramkey"></td>
20764 <td></td>
20765 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
20766 <td class="paramname"><em>output</em>&#160;</td>
20767 </tr>
20768 <tr>
20769 <td></td>
20770 <td>)</td>
20771 <td></td><td></td>
20772 </tr>
20773 </table>
20774</div><div class="memdoc">
20775
20776<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">71</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml">Mean.cpp</a>.</p>
20777
20778<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00018">NextIndex()</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00039">ReducedOutputOffset()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
20779
20780<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01456">BOOST_AUTO_TEST_CASE()</a>.</p>
20781<div class="fragment"><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;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> outputDims = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> inputDims = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Initialise output data.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputs = 1;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; outputNumDims; ++idx)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; numOutputs *= outputDims[idx];</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"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; std::vector&lt;float&gt; tempSum(numOutputs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; output[idx];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0.0f);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; tempSum[idx] = 0.0f;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// Initialise temp index.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; std::vector&lt;unsigned int&gt; tempIndex(inputNumDims);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; tempIndex[idx] = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; std::vector&lt;unsigned int&gt; resolvedAxis = axis;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (resolvedAxis.empty())</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; inputNumDims; ++idx)</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; resolvedAxis.push_back(idx);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</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="keyword">auto</span> numResolvedAxis = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(resolvedAxis.size());</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Iterates through input_data and sum up the reduced axis.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">bool</span> hasNext = <span class="keyword">true</span>; hasNext; hasNext = <a class="code" href="namespacearmnn.xhtml#a869f740e9c2fcb8642350c6e3d0b3742">NextIndex</a>(inputNumDims, inputDims, tempIndex))</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset = <a class="code" href="namespacearmnn.xhtml#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex, 0, {});</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputOffset = <a class="code" href="namespacearmnn.xhtml#ae86f1ca23eaa764da9e589cc8e39a969">ReducedOutputOffset</a>(inputNumDims, inputDims, tempIndex,</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; numResolvedAxis, resolvedAxis);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; input[inputOffset];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; tempSum[outputOffset] += input.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// Takes average by num of elements added to get mean.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">size_t</span> numElementsInAxis = 1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numResolvedAxis; ++idx)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current = inputDims[resolvedAxis[idx]];</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; BOOST_ASSERT(boost::numeric_cast&lt;float&gt;(current) &lt;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; (std::numeric_limits&lt;float&gt;::max() / boost::numeric_cast&lt;float&gt;(numElementsInAxis)));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; numElementsInAxis *= current;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (numElementsInAxis &gt; 0) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numOutputs; ++idx)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; output[idx];</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(tempSum[idx] / boost::numeric_cast&lt;float&gt;(numElementsInAxis));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a869f740e9c2fcb8642350c6e3d0b3742"><div class="ttname"><a href="namespacearmnn.xhtml#a869f740e9c2fcb8642350c6e3d0b3742">armnn::NextIndex</a></div><div class="ttdeci">bool NextIndex(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;current)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00018">Mean.cpp:18</a></div></div>
20782<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#l00088">Tensor.hpp:88</a></div></div>
20783<div class="ttc" id="namespacearmnn_xhtml_ae86f1ca23eaa764da9e589cc8e39a969"><div class="ttname"><a href="namespacearmnn.xhtml#ae86f1ca23eaa764da9e589cc8e39a969">armnn::ReducedOutputOffset</a></div><div class="ttdeci">unsigned int ReducedOutputOffset(const unsigned int numDims, const armnn::TensorShape &amp;dims, std::vector&lt; unsigned int &gt; &amp;index, const unsigned int numAxis, const std::vector&lt; unsigned int &gt; &amp;axis)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00039">Mean.cpp:39</a></div></div>
20784<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
20785<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>
20786<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
20787<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
20788<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_a157e27d41e9f6b21f0d3c025fa47dc24"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">armnn::TensorInfo::GetNumDimensions</a></div><div class="ttdeci">unsigned int GetNumDimensions() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00092">Tensor.hpp:92</a></div></div>
20789</div><!-- fragment -->
20790</div>
20791</div>
20792<a id="a17955517b0d148f7ffdbffe8b46e41e0"></a>
20793<h2 class="memtitle"><span class="permalink"><a href="#a17955517b0d148f7ffdbffe8b46e41e0">&#9670;&nbsp;</a></span>MockBackendId()</h2>
20794
20795<div class="memitem">
20796<div class="memproto">
20797 <table class="memname">
20798 <tr>
20799 <td class="memname">constexpr const char* armnn::MockBackendId </td>
20800 <td>(</td>
20801 <td class="paramname"></td><td>)</td>
20802 <td></td>
20803 </tr>
20804 </table>
20805</div><div class="memdoc">
20806
20807<p class="definition">Definition at line <a class="el" href="_mock_backend_id_8hpp_source.xhtml#l00011">11</a> of file <a class="el" href="_mock_backend_id_8hpp_source.xhtml">MockBackendId.hpp</a>.</p>
20808
20809<p class="reference">Referenced by <a class="el" href="_backend_profiling_tests_8cpp_source.xhtml#l00112">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_mock_backend_8cpp_source.xhtml#l00091">MockBackend::GetIdStatic()</a>, and <a class="el" href="_mock_backend_8cpp_source.xhtml#l00134">MockBackend::OptimizeSubgraphView()</a>.</p>
20810<div class="fragment"><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;MockAcc&quot;</span>; }</div></div><!-- fragment -->
20811</div>
20812</div>
20813<a id="afc773aec6f845adc0cc547ce475dfe3f"></a>
20814<h2 class="memtitle"><span class="permalink"><a href="#afc773aec6f845adc0cc547ce475dfe3f">&#9670;&nbsp;</a></span>NeonAbsWorkloadValidate()</h2>
20815
20816<div class="memitem">
20817<div class="memproto">
20818 <table class="memname">
20819 <tr>
20820 <td class="memname">arm_compute::Status NeonAbsWorkloadValidate </td>
20821 <td>(</td>
20822 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20823 <td class="paramname"><em>input</em>, </td>
20824 </tr>
20825 <tr>
20826 <td class="paramkey"></td>
20827 <td></td>
20828 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20829 <td class="paramname"><em>output</em>&#160;</td>
20830 </tr>
20831 <tr>
20832 <td></td>
20833 <td>)</td>
20834 <td></td><td></td>
20835 </tr>
20836 </table>
20837</div><div class="memdoc">
20838
20839<p class="definition">Definition at line <a class="el" href="_neon_abs_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_neon_abs_workload_8cpp_source.xhtml">NeonAbsWorkload.cpp</a>.</p>
20840
20841<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00354">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
20842<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEAbsLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
20843</div>
20844</div>
20845<a id="a46495807633a01d826851e1cb498f071"></a>
20846<h2 class="memtitle"><span class="permalink"><a href="#a46495807633a01d826851e1cb498f071">&#9670;&nbsp;</a></span>NeonActivationWorkloadValidate()</h2>
20847
20848<div class="memitem">
20849<div class="memproto">
20850 <table class="memname">
20851 <tr>
20852 <td class="memname">arm_compute::Status NeonActivationWorkloadValidate </td>
20853 <td>(</td>
20854 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20855 <td class="paramname"><em>input</em>, </td>
20856 </tr>
20857 <tr>
20858 <td class="paramkey"></td>
20859 <td></td>
20860 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20861 <td class="paramname"><em>output</em>, </td>
20862 </tr>
20863 <tr>
20864 <td class="paramkey"></td>
20865 <td></td>
20866 <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
20867 <td class="paramname"><em>descriptor</em>&#160;</td>
20868 </tr>
20869 <tr>
20870 <td></td>
20871 <td>)</td>
20872 <td></td><td></td>
20873 </tr>
20874 </table>
20875</div><div class="memdoc">
20876
20877<p class="definition">Definition at line <a class="el" href="_neon_activation_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_activation_workload_8cpp_source.xhtml">NeonActivationWorkload.cpp</a>.</p>
20878
20879<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00129">NeonLayerSupport::IsActivationSupported()</a>.</p>
20880<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</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="keyword">const</span> arm_compute::ActivationLayerInfo activationLayerInfo =</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad701d0d29baa4266ab4d33b090aa661c">ConvertActivationDescriptorToAclActivationLayerInfo</a>(descriptor);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEActivationLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; activationLayerInfo);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad701d0d29baa4266ab4d33b090aa661c"><div class="ttname"><a href="namespacearmnn.xhtml#ad701d0d29baa4266ab4d33b090aa661c">armnn::ConvertActivationDescriptorToAclActivationLayerInfo</a></div><div class="ttdeci">arm_compute::ActivationLayerInfo ConvertActivationDescriptorToAclActivationLayerInfo(const ActivationDescriptor &amp;actDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00074">ArmComputeUtils.hpp:74</a></div></div>
20881</div><!-- fragment -->
20882</div>
20883</div>
20884<a id="afc541536011ccfb06853c45bfaba2dfd"></a>
20885<h2 class="memtitle"><span class="permalink"><a href="#afc541536011ccfb06853c45bfaba2dfd">&#9670;&nbsp;</a></span>NeonAdditionWorkloadValidate()</h2>
20886
20887<div class="memitem">
20888<div class="memproto">
20889 <table class="memname">
20890 <tr>
20891 <td class="memname">arm_compute::Status NeonAdditionWorkloadValidate </td>
20892 <td>(</td>
20893 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20894 <td class="paramname"><em>input0</em>, </td>
20895 </tr>
20896 <tr>
20897 <td class="paramkey"></td>
20898 <td></td>
20899 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20900 <td class="paramname"><em>input1</em>, </td>
20901 </tr>
20902 <tr>
20903 <td class="paramkey"></td>
20904 <td></td>
20905 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20906 <td class="paramname"><em>output</em>&#160;</td>
20907 </tr>
20908 <tr>
20909 <td></td>
20910 <td>)</td>
20911 <td></td><td></td>
20912 </tr>
20913 </table>
20914</div><div class="memdoc">
20915
20916<p class="definition">Definition at line <a class="el" href="_neon_addition_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_neon_addition_workload_8cpp_source.xhtml">NeonAdditionWorkload.cpp</a>.</p>
20917
20918<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00142">NeonLayerSupport::IsAdditionSupported()</a>.</p>
20919<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticAddition::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
20920</div>
20921</div>
20922<a id="a61d1f39297fec6e3062e4047dc5f236e"></a>
20923<h2 class="memtitle"><span class="permalink"><a href="#a61d1f39297fec6e3062e4047dc5f236e">&#9670;&nbsp;</a></span>NeonArgMinMaxWorkloadValidate()</h2>
20924
20925<div class="memitem">
20926<div class="memproto">
20927 <table class="memname">
20928 <tr>
20929 <td class="memname">arm_compute::Status NeonArgMinMaxWorkloadValidate </td>
20930 <td>(</td>
20931 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20932 <td class="paramname"><em>input</em>, </td>
20933 </tr>
20934 <tr>
20935 <td class="paramkey"></td>
20936 <td></td>
20937 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20938 <td class="paramname"><em>output</em>, </td>
20939 </tr>
20940 <tr>
20941 <td class="paramkey"></td>
20942 <td></td>
20943 <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
20944 <td class="paramname"><em>descriptor</em>&#160;</td>
20945 </tr>
20946 <tr>
20947 <td></td>
20948 <td>)</td>
20949 <td></td><td></td>
20950 </tr>
20951 </table>
20952</div><div class="memdoc">
20953
20954<p class="definition">Definition at line <a class="el" href="_neon_arg_min_max_workload_8cpp_source.xhtml#l00029">29</a> of file <a class="el" href="_neon_arg_min_max_workload_8cpp_source.xhtml">NeonArgMinMaxWorkload.cpp</a>.</p>
20955
20956<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00154">NeonLayerSupport::IsArgMinMaxSupported()</a>.</p>
20957<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</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; <span class="keyword">auto</span> numDims = input.GetNumDimensions();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">auto</span> unsignedAxis = <a class="code" href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a>(numDims, descriptor.m_Axis);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(CalcAclAxis(numDims, unsignedAxis));</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="keywordflow">if</span> (descriptor.m_Function == ArgMinMaxFunction::Max)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MAX);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArgMinMaxLayer::validate(&amp;aclInput, aclAxis, &amp;aclOutput,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::ReductionOperation::ARG_IDX_MIN);</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;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_ac93cb1365b4bcb67df2a3164606096c5"><div class="ttname"><a href="namespacearmnn_utils.xhtml#ac93cb1365b4bcb67df2a3164606096c5">armnnUtils::GetUnsignedAxis</a></div><div class="ttdeci">unsigned int GetUnsignedAxis(const unsigned int inputDimension, const int axis)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00127">TensorUtils.cpp:127</a></div></div>
20958<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
20959</div><!-- fragment -->
20960</div>
20961</div>
20962<a id="a3a34a305e5187f3a3c67030d3bebbdb0"></a>
20963<h2 class="memtitle"><span class="permalink"><a href="#a3a34a305e5187f3a3c67030d3bebbdb0">&#9670;&nbsp;</a></span>NeonBackendId()</h2>
20964
20965<div class="memitem">
20966<div class="memproto">
20967 <table class="memname">
20968 <tr>
20969 <td class="memname">constexpr const char* armnn::NeonBackendId </td>
20970 <td>(</td>
20971 <td class="paramname"></td><td>)</td>
20972 <td></td>
20973 </tr>
20974 </table>
20975</div><div class="memdoc">
20976
20977<p class="definition">Definition at line <a class="el" href="_neon_backend_id_8hpp_source.xhtml#l00010">10</a> of file <a class="el" href="_neon_backend_id_8hpp_source.xhtml">NeonBackendId.hpp</a>.</p>
20978
20979<p class="reference">Referenced by <a class="el" href="_neon_backend_8cpp_source.xhtml#l00029">NeonBackend::GetIdStatic()</a>.</p>
20980<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuAcc&quot;</span>; }</div></div><!-- fragment -->
20981</div>
20982</div>
20983<a id="a6c856ceba1828fe201b2b6c032d70371"></a>
20984<h2 class="memtitle"><span class="permalink"><a href="#a6c856ceba1828fe201b2b6c032d70371">&#9670;&nbsp;</a></span>NeonBatchNormalizationValidate()</h2>
20985
20986<div class="memitem">
20987<div class="memproto">
20988 <table class="memname">
20989 <tr>
20990 <td class="memname">arm_compute::Status NeonBatchNormalizationValidate </td>
20991 <td>(</td>
20992 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20993 <td class="paramname"><em>input</em>, </td>
20994 </tr>
20995 <tr>
20996 <td class="paramkey"></td>
20997 <td></td>
20998 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
20999 <td class="paramname"><em>output</em>, </td>
21000 </tr>
21001 <tr>
21002 <td class="paramkey"></td>
21003 <td></td>
21004 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21005 <td class="paramname"><em>mean</em>, </td>
21006 </tr>
21007 <tr>
21008 <td class="paramkey"></td>
21009 <td></td>
21010 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21011 <td class="paramname"><em>var</em>, </td>
21012 </tr>
21013 <tr>
21014 <td class="paramkey"></td>
21015 <td></td>
21016 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21017 <td class="paramname"><em>beta</em>, </td>
21018 </tr>
21019 <tr>
21020 <td class="paramkey"></td>
21021 <td></td>
21022 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21023 <td class="paramname"><em>gamma</em>, </td>
21024 </tr>
21025 <tr>
21026 <td class="paramkey"></td>
21027 <td></td>
21028 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
21029 <td class="paramname"><em>descriptor</em>&#160;</td>
21030 </tr>
21031 <tr>
21032 <td></td>
21033 <td>)</td>
21034 <td></td><td></td>
21035 </tr>
21036 </table>
21037</div><div class="memdoc">
21038
21039<p class="definition">Definition at line <a class="el" href="_neon_batch_normalization_workload_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_neon_batch_normalization_workload_8cpp_source.xhtml">NeonBatchNormalizationWorkload.cpp</a>.</p>
21040
21041<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00166">NeonLayerSupport::IsBatchNormalizationSupported()</a>.</p>
21042<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclMeanInfo =</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(mean, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclVarInfo =</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(var, descriptor.m_DataLayout);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBetaInfo =</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(beta, descriptor.m_DataLayout);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclGammaInfo =</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(gamma, descriptor.m_DataLayout);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEBatchNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; &amp;aclMeanInfo,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclVarInfo,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; &amp;aclBetaInfo,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; &amp;aclGammaInfo,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div></div><!-- fragment -->
21043</div>
21044</div>
21045<a id="a00623eeb8f77dac6dbbc1395b5270dbb"></a>
21046<h2 class="memtitle"><span class="permalink"><a href="#a00623eeb8f77dac6dbbc1395b5270dbb">&#9670;&nbsp;</a></span>NeonBatchToSpaceNdWorkloadValidate()</h2>
21047
21048<div class="memitem">
21049<div class="memproto">
21050 <table class="memname">
21051 <tr>
21052 <td class="memname">arm_compute::Status NeonBatchToSpaceNdWorkloadValidate </td>
21053 <td>(</td>
21054 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21055 <td class="paramname"><em>input</em>, </td>
21056 </tr>
21057 <tr>
21058 <td class="paramkey"></td>
21059 <td></td>
21060 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21061 <td class="paramname"><em>output</em>, </td>
21062 </tr>
21063 <tr>
21064 <td class="paramkey"></td>
21065 <td></td>
21066 <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
21067 <td class="paramname"><em>desc</em>&#160;</td>
21068 </tr>
21069 <tr>
21070 <td></td>
21071 <td>)</td>
21072 <td></td><td></td>
21073 </tr>
21074 </table>
21075</div><div class="memdoc">
21076
21077<p class="definition">Definition at line <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="_neon_batch_to_space_nd_workload_8cpp_source.xhtml">NeonBatchToSpaceNdWorkload.cpp</a>.</p>
21078
21079<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00186">NeonLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
21080<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, desc.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, desc.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(desc.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">arm_compute::Status</a> aclStatus = arm_compute::NEBatchToSpaceLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; blockWidth,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; blockHeight,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> aclStatus;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70b"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">armnn::Status</a></div><div class="ttdeci">Status</div><div class="ttdoc">enumeration </div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00026">Types.hpp:26</a></div></div>
21081<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
21082</div><!-- fragment -->
21083</div>
21084</div>
21085<a id="a8a219633e750d6daffcef3b641fa11f3"></a>
21086<h2 class="memtitle"><span class="permalink"><a href="#a8a219633e750d6daffcef3b641fa11f3">&#9670;&nbsp;</a></span>NeonConcatWorkloadValidate()</h2>
21087
21088<div class="memitem">
21089<div class="memproto">
21090 <table class="memname">
21091 <tr>
21092 <td class="memname">arm_compute::Status NeonConcatWorkloadValidate </td>
21093 <td>(</td>
21094 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
21095 <td class="paramname"><em>inputs</em>, </td>
21096 </tr>
21097 <tr>
21098 <td class="paramkey"></td>
21099 <td></td>
21100 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21101 <td class="paramname"><em>output</em>, </td>
21102 </tr>
21103 <tr>
21104 <td class="paramkey"></td>
21105 <td></td>
21106 <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
21107 <td class="paramname"><em>descriptor</em>&#160;</td>
21108 </tr>
21109 <tr>
21110 <td></td>
21111 <td>)</td>
21112 <td></td><td></td>
21113 </tr>
21114 </table>
21115</div><div class="memdoc">
21116
21117<p class="definition">Definition at line <a class="el" href="_neon_concat_workload_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_neon_concat_workload_8cpp_source.xhtml">NeonConcatWorkload.cpp</a>.</p>
21118
21119<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00216">NeonLayerSupport::IsConcatSupported()</a>.</p>
21120<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</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; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; aclInputs.emplace_back(aclInputInfo);</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; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</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"> 46</span>&#160; <span class="keywordtype">size_t</span> aclAxis = CalcAxis(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConcatenateLayer::validate(aclInputPtrs, &amp;aclOutputInfo, aclAxis);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
21121</div><!-- fragment -->
21122</div>
21123</div>
21124<a id="af64bb043263ba7d09c98fd88da60726d"></a>
21125<h2 class="memtitle"><span class="permalink"><a href="#af64bb043263ba7d09c98fd88da60726d">&#9670;&nbsp;</a></span>NeonConvolution2dWorkloadValidate()</h2>
21126
21127<div class="memitem">
21128<div class="memproto">
21129 <table class="memname">
21130 <tr>
21131 <td class="memname">arm_compute::Status NeonConvolution2dWorkloadValidate </td>
21132 <td>(</td>
21133 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21134 <td class="paramname"><em>input</em>, </td>
21135 </tr>
21136 <tr>
21137 <td class="paramkey"></td>
21138 <td></td>
21139 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21140 <td class="paramname"><em>output</em>, </td>
21141 </tr>
21142 <tr>
21143 <td class="paramkey"></td>
21144 <td></td>
21145 <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
21146 <td class="paramname"><em>descriptor</em>, </td>
21147 </tr>
21148 <tr>
21149 <td class="paramkey"></td>
21150 <td></td>
21151 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21152 <td class="paramname"><em>weights</em>, </td>
21153 </tr>
21154 <tr>
21155 <td class="paramkey"></td>
21156 <td></td>
21157 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
21158 <td class="paramname"><em>biases</em>&#160;</td>
21159 </tr>
21160 <tr>
21161 <td></td>
21162 <td>)</td>
21163 <td></td><td></td>
21164 </tr>
21165 </table>
21166</div><div class="memdoc">
21167
21168<p class="definition">Definition at line <a class="el" href="_neon_convolution2d_workload_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_neon_convolution2d_workload_8cpp_source.xhtml">NeonConvolution2dWorkload.cpp</a>.</p>
21169
21170<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00284">NeonLayerSupport::IsConvolution2dSupported()</a>.</p>
21171<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(descriptor.m_DilationX,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; descriptor.m_DilationY);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</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; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</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"> 46</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> arm_compute::NEConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; layerInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::WeightsInfo(),</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;}</div></div><!-- fragment -->
21172</div>
21173</div>
21174<a id="a116d88067bf98ce9858ab73e68f605f9"></a>
21175<h2 class="memtitle"><span class="permalink"><a href="#a116d88067bf98ce9858ab73e68f605f9">&#9670;&nbsp;</a></span>NeonDepthToSpaceWorkloadValidate()</h2>
21176
21177<div class="memitem">
21178<div class="memproto">
21179 <table class="memname">
21180 <tr>
21181 <td class="memname">arm_compute::Status NeonDepthToSpaceWorkloadValidate </td>
21182 <td>(</td>
21183 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21184 <td class="paramname"><em>input</em>, </td>
21185 </tr>
21186 <tr>
21187 <td class="paramkey"></td>
21188 <td></td>
21189 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21190 <td class="paramname"><em>output</em>, </td>
21191 </tr>
21192 <tr>
21193 <td class="paramkey"></td>
21194 <td></td>
21195 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
21196 <td class="paramname"><em>descriptor</em>&#160;</td>
21197 </tr>
21198 <tr>
21199 <td></td>
21200 <td>)</td>
21201 <td></td><td></td>
21202 </tr>
21203 </table>
21204</div><div class="memdoc">
21205
21206<p class="definition">Definition at line <a class="el" href="_neon_depth_to_space_workload_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_neon_depth_to_space_workload_8cpp_source.xhtml">NeonDepthToSpaceWorkload.cpp</a>.</p>
21207
21208<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
21209
21210<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00300">NeonLayerSupport::IsDepthToSpaceSupported()</a>.</p>
21211<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; int32_t blockSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockSize);</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; <span class="keywordflow">return</span> arm_compute::NEDepthToSpaceLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
21212<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
21213</div><!-- fragment -->
21214</div>
21215</div>
21216<a id="a168ebb908e1ee4bac24cb7992510de73"></a>
21217<h2 class="memtitle"><span class="permalink"><a href="#a168ebb908e1ee4bac24cb7992510de73">&#9670;&nbsp;</a></span>NeonDepthwiseConvolutionWorkloadValidate()</h2>
21218
21219<div class="memitem">
21220<div class="memproto">
21221 <table class="memname">
21222 <tr>
21223 <td class="memname">arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate </td>
21224 <td>(</td>
21225 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21226 <td class="paramname"><em>input</em>, </td>
21227 </tr>
21228 <tr>
21229 <td class="paramkey"></td>
21230 <td></td>
21231 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21232 <td class="paramname"><em>output</em>, </td>
21233 </tr>
21234 <tr>
21235 <td class="paramkey"></td>
21236 <td></td>
21237 <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
21238 <td class="paramname"><em>descriptor</em>, </td>
21239 </tr>
21240 <tr>
21241 <td class="paramkey"></td>
21242 <td></td>
21243 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21244 <td class="paramname"><em>weights</em>, </td>
21245 </tr>
21246 <tr>
21247 <td class="paramkey"></td>
21248 <td></td>
21249 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
21250 <td class="paramname"><em>biases</em>&#160;</td>
21251 </tr>
21252 <tr>
21253 <td></td>
21254 <td>)</td>
21255 <td></td><td></td>
21256 </tr>
21257 </table>
21258</div><div class="memdoc">
21259
21260<p class="definition">Definition at line <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_neon_depthwise_convolution_workload_8cpp_source.xhtml">NeonDepthwiseConvolutionWorkload.cpp</a>.</p>
21261
21262<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00312">NeonLayerSupport::IsDepthwiseConvolutionSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00338">NeonLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
21263<div class="fragment"><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; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</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="comment">// ArmNN&#39;s weight format is [ M, I, H, W ]</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclDepthMultiplier = weights.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</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">// Convert the weight format from ArmNN&#39;s [ M, I, H, W ] (does NOT depend on the data layout) to either</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// [ 1, H, W, I * M ] (if NHWC) or [ 1, I * M, H, W ] (if NCHW), as required by the compute library</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> weightsPermuted = <a class="code" href="namespacearmnn.xhtml#a1e8288eac7e909fdb58b6113d816763a">ConvertWeightTensorInfoFromArmnnToAcl</a>(weights, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// Convert the weights into the compute library format</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weightsPermuted, descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</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="keywordflow">if</span> (descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">m_BiasEnabled</a>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; BOOST_ASSERT(biases.<a class="code" href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">has_value</a>());</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; aclBiasesInfo = BuildArmComputeTensorInfo(biases.<a class="code" href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">value</a>(), descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</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; arm_compute::PadStrideInfo aclPadStrideInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> arm_compute::Size2D aclDilationInfo = BuildArmComputeSize2D(</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">m_DilationX</a>,descriptor.<a class="code" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">m_DilationY</a>);</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">return</span> arm_compute::NEDepthwiseConvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; aclPadStrideInfo,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; aclDepthMultiplier,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; arm_compute::ActivationLayerInfo(),</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; aclDilationInfo);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aea202e14d8874cefd9a0f778022b7e25"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aea202e14d8874cefd9a0f778022b7e25">armnn::DepthwiseConvolution2dDescriptor::m_BiasEnabled</a></div><div class="ttdeci">bool m_BiasEnabled</div><div class="ttdoc">Enable/disable bias. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00490">Descriptors.hpp:490</a></div></div>
21264<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#l00088">Tensor.hpp:88</a></div></div>
21265<div class="ttc" id="namespacearmnn_xhtml_a1e8288eac7e909fdb58b6113d816763a"><div class="ttname"><a href="namespacearmnn.xhtml#a1e8288eac7e909fdb58b6113d816763a">armnn::ConvertWeightTensorInfoFromArmnnToAcl</a></div><div class="ttdeci">TensorInfo ConvertWeightTensorInfoFromArmnnToAcl(const TensorInfo &amp;weightInfo, DataLayout dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00109">WorkloadUtils.cpp:109</a></div></div>
21266<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::DepthwiseConvolution2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00492">Descriptors.hpp:492</a></div></div>
21267<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#l00053">Tensor.hpp:53</a></div></div>
21268<div class="ttc" id="classarmnn_1_1_optional_reference_switch_xhtml_a77c7d528ac063d870b8c8426ec81c1c3"><div class="ttname"><a href="classarmnn_1_1_optional_reference_switch.xhtml#a77c7d528ac063d870b8c8426ec81c1c3">armnn::OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value</a></div><div class="ttdeci">const T &amp; value() const</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00146">Optional.hpp:146</a></div></div>
21269<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_a302b688d88dd73cde0fb1faef6679907"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#a302b688d88dd73cde0fb1faef6679907">armnn::DepthwiseConvolution2dDescriptor::m_DilationY</a></div><div class="ttdeci">uint32_t m_DilationY</div><div class="ttdoc">Dilation factor value for height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00488">Descriptors.hpp:488</a></div></div>
21270<div class="ttc" id="structarmnn_1_1_depthwise_convolution2d_descriptor_xhtml_aa3c6a77a963a98ccb8ea7b8fd008a8c1"><div class="ttname"><a href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml#aa3c6a77a963a98ccb8ea7b8fd008a8c1">armnn::DepthwiseConvolution2dDescriptor::m_DilationX</a></div><div class="ttdeci">uint32_t m_DilationX</div><div class="ttdoc">Dilation factor value for width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00486">Descriptors.hpp:486</a></div></div>
21271<div class="ttc" id="classarmnn_1_1_optional_base_xhtml_a86b749ce2c4bc627fa8a1fcfaf0e314f"><div class="ttname"><a href="classarmnn_1_1_optional_base.xhtml#a86b749ce2c4bc627fa8a1fcfaf0e314f">armnn::OptionalBase::has_value</a></div><div class="ttdeci">bool has_value() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="_optional_8hpp_source.xhtml#l00053">Optional.hpp:53</a></div></div>
21272</div><!-- fragment -->
21273</div>
21274</div>
21275<a id="acefede7cc57c71ea4cfe1c888bb413e0"></a>
21276<h2 class="memtitle"><span class="permalink"><a href="#acefede7cc57c71ea4cfe1c888bb413e0">&#9670;&nbsp;</a></span>NeonDequantizeWorkloadValidate()</h2>
21277
21278<div class="memitem">
21279<div class="memproto">
21280 <table class="memname">
21281 <tr>
21282 <td class="memname">arm_compute::Status NeonDequantizeWorkloadValidate </td>
21283 <td>(</td>
21284 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21285 <td class="paramname"><em>input</em>, </td>
21286 </tr>
21287 <tr>
21288 <td class="paramkey"></td>
21289 <td></td>
21290 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21291 <td class="paramname"><em>output</em>&#160;</td>
21292 </tr>
21293 <tr>
21294 <td></td>
21295 <td>)</td>
21296 <td></td><td></td>
21297 </tr>
21298 </table>
21299</div><div class="memdoc">
21300
21301<p class="definition">Definition at line <a class="el" href="_neon_dequantize_workload_8cpp_source.xhtml#l00021">21</a> of file <a class="el" href="_neon_dequantize_workload_8cpp_source.xhtml">NeonDequantizeWorkload.cpp</a>.</p>
21302
21303<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00328">NeonLayerSupport::IsDequantizeSupported()</a>.</p>
21304<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDequantizationLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
21305</div>
21306</div>
21307<a id="a304243ccb52986da06388dc57deae88f"></a>
21308<h2 class="memtitle"><span class="permalink"><a href="#a304243ccb52986da06388dc57deae88f">&#9670;&nbsp;</a></span>NeonDetectionPostProcessValidate()</h2>
21309
21310<div class="memitem">
21311<div class="memproto">
21312 <table class="memname">
21313 <tr>
21314 <td class="memname">arm_compute::Status NeonDetectionPostProcessValidate </td>
21315 <td>(</td>
21316 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21317 <td class="paramname"><em>boxEncodings</em>, </td>
21318 </tr>
21319 <tr>
21320 <td class="paramkey"></td>
21321 <td></td>
21322 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21323 <td class="paramname"><em>scores</em>, </td>
21324 </tr>
21325 <tr>
21326 <td class="paramkey"></td>
21327 <td></td>
21328 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21329 <td class="paramname"><em>anchors</em>, </td>
21330 </tr>
21331 <tr>
21332 <td class="paramkey"></td>
21333 <td></td>
21334 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21335 <td class="paramname"><em>detectionBoxes</em>, </td>
21336 </tr>
21337 <tr>
21338 <td class="paramkey"></td>
21339 <td></td>
21340 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21341 <td class="paramname"><em>detectionClasses</em>, </td>
21342 </tr>
21343 <tr>
21344 <td class="paramkey"></td>
21345 <td></td>
21346 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21347 <td class="paramname"><em>detectionScores</em>, </td>
21348 </tr>
21349 <tr>
21350 <td class="paramkey"></td>
21351 <td></td>
21352 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21353 <td class="paramname"><em>numDetections</em>, </td>
21354 </tr>
21355 <tr>
21356 <td class="paramkey"></td>
21357 <td></td>
21358 <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
21359 <td class="paramname"><em>desc</em>&#160;</td>
21360 </tr>
21361 <tr>
21362 <td></td>
21363 <td>)</td>
21364 <td></td><td></td>
21365 </tr>
21366 </table>
21367</div><div class="memdoc">
21368
21369<p class="definition">Definition at line <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00033">33</a> of file <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml">NeonDetectionPostProcessWorkload.cpp</a>.</p>
21370
21371<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, and <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00018">MakeInfo()</a>.</p>
21372<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; arm_compute::DetectionPostProcessLayerInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a> = <a class="code" href="namespacearmnn.xhtml#ae0ae21bef03ed19f252c72c660e571a4">MakeInfo</a>(desc);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclBoxEncodings =</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScores =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>);</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="keyword">const</span> arm_compute::TensorInfo aclAnchors =</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; arm_compute::TensorInfo aclDetectionBoxes =</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionBoxes);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; arm_compute::TensorInfo aclDetectionClasses =</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionClasses);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; arm_compute::TensorInfo aclDetectionScores =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(detectionScores);</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; arm_compute::TensorInfo aclNumDetections =</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; armcomputetensorutils::BuildArmComputeTensorInfo(numDetections);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDetectionPostProcessLayer::validate(</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; &amp;aclBoxEncodings,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; &amp;aclScores,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; &amp;aclAnchors,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; &amp;aclDetectionBoxes,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; &amp;aclDetectionClasses,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; &amp;aclDetectionScores,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; &amp;aclNumDetections,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; info);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_ada422a73ac4e68bcb1b1b1f0b44028d9"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#ada422a73ac4e68bcb1b1b1f0b44028d9">boxEncodings</a></div><div class="ttdeci">std::vector&lt; float &gt; boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })</div></div>
21373<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
21374<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
21375<div class="ttc" id="namespacearmnn_xhtml_ae0ae21bef03ed19f252c72c660e571a4"><div class="ttname"><a href="namespacearmnn.xhtml#ae0ae21bef03ed19f252c72c660e571a4">armnn::MakeInfo</a></div><div class="ttdeci">arm_compute::DetectionPostProcessLayerInfo MakeInfo(const DetectionPostProcessDescriptor &amp;desc)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00018">NeonDetectionPostProcessWorkload.cpp:18</a></div></div>
21376<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_ac0981848e4ae57729f14f72bd4caa9f8"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#ac0981848e4ae57729f14f72bd4caa9f8">anchors</a></div><div class="ttdeci">std::vector&lt; float &gt; anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })</div></div>
21377</div><!-- fragment -->
21378</div>
21379</div>
21380<a id="a3a62359fc5ebfe9628871c0ba79fb37c"></a>
21381<h2 class="memtitle"><span class="permalink"><a href="#a3a62359fc5ebfe9628871c0ba79fb37c">&#9670;&nbsp;</a></span>NeonDivisionWorkloadValidate()</h2>
21382
21383<div class="memitem">
21384<div class="memproto">
21385 <table class="memname">
21386 <tr>
21387 <td class="memname">arm_compute::Status NeonDivisionWorkloadValidate </td>
21388 <td>(</td>
21389 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21390 <td class="paramname"><em>input0</em>, </td>
21391 </tr>
21392 <tr>
21393 <td class="paramkey"></td>
21394 <td></td>
21395 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21396 <td class="paramname"><em>input1</em>, </td>
21397 </tr>
21398 <tr>
21399 <td class="paramkey"></td>
21400 <td></td>
21401 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21402 <td class="paramname"><em>output</em>&#160;</td>
21403 </tr>
21404 <tr>
21405 <td></td>
21406 <td>)</td>
21407 <td></td><td></td>
21408 </tr>
21409 </table>
21410</div><div class="memdoc">
21411
21412<p class="definition">Definition at line <a class="el" href="_neon_division_workload_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_neon_division_workload_8cpp_source.xhtml">NeonDivisionWorkload.cpp</a>.</p>
21413
21414<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00523">NeonLayerSupport::IsDivisionSupported()</a>.</p>
21415<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseDivision::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21416</div>
21417</div>
21418<a id="a0b7897a2a04016aa7fa24e2a1d10e944"></a>
21419<h2 class="memtitle"><span class="permalink"><a href="#a0b7897a2a04016aa7fa24e2a1d10e944">&#9670;&nbsp;</a></span>NeonFullyConnectedWorkloadValidate()</h2>
21420
21421<div class="memitem">
21422<div class="memproto">
21423 <table class="memname">
21424 <tr>
21425 <td class="memname">arm_compute::Status NeonFullyConnectedWorkloadValidate </td>
21426 <td>(</td>
21427 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21428 <td class="paramname"><em>input</em>, </td>
21429 </tr>
21430 <tr>
21431 <td class="paramkey"></td>
21432 <td></td>
21433 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21434 <td class="paramname"><em>output</em>, </td>
21435 </tr>
21436 <tr>
21437 <td class="paramkey"></td>
21438 <td></td>
21439 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21440 <td class="paramname"><em>weights</em>, </td>
21441 </tr>
21442 <tr>
21443 <td class="paramkey"></td>
21444 <td></td>
21445 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21446 <td class="paramname"><em>biases</em>, </td>
21447 </tr>
21448 <tr>
21449 <td class="paramkey"></td>
21450 <td></td>
21451 <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
21452 <td class="paramname"><em>descriptor</em>&#160;</td>
21453 </tr>
21454 <tr>
21455 <td></td>
21456 <td>)</td>
21457 <td></td><td></td>
21458 </tr>
21459 </table>
21460</div><div class="memdoc">
21461
21462<p class="definition">Definition at line <a class="el" href="_neon_fully_connected_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_neon_fully_connected_workload_8cpp_source.xhtml">NeonFullyConnectedWorkload.cpp</a>.</p>
21463
21464<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00392">NeonLayerSupport::IsFullyConnectedSupported()</a>.</p>
21465<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeights = BuildArmComputeTensorInfo(weights);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::TensorInfo aclBiases;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::TensorInfo *optionalAclBiases = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; aclBiases = BuildArmComputeTensorInfo(biases);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; optionalAclBiases = &amp;aclBiases;</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="keyword">const</span> arm_compute::FullyConnectedLayerInfo fullyConnectedLayerInfo =</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="namespacearmnn.xhtml#abccab9266ab13dbd806445af31ddbba7">ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a>(descriptor);</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;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> arm_compute::NEFullyConnectedLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; &amp;aclWeights,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; optionalAclBiases,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; fullyConnectedLayerInfo);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abccab9266ab13dbd806445af31ddbba7"><div class="ttname"><a href="namespacearmnn.xhtml#abccab9266ab13dbd806445af31ddbba7">armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo</a></div><div class="ttdeci">arm_compute::FullyConnectedLayerInfo ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo(const FullyConnectedDescriptor &amp;fullyConnectedDesc)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00119">ArmComputeUtils.hpp:119</a></div></div>
21466</div><!-- fragment -->
21467</div>
21468</div>
21469<a id="ad536149438b0481b7278ad741e18fb5a"></a>
21470<h2 class="memtitle"><span class="permalink"><a href="#ad536149438b0481b7278ad741e18fb5a">&#9670;&nbsp;</a></span>NeonGreaterWorkloadValidate()</h2>
21471
21472<div class="memitem">
21473<div class="memproto">
21474 <table class="memname">
21475 <tr>
21476 <td class="memname">arm_compute::Status NeonGreaterWorkloadValidate </td>
21477 <td>(</td>
21478 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21479 <td class="paramname"><em>input0</em>, </td>
21480 </tr>
21481 <tr>
21482 <td class="paramkey"></td>
21483 <td></td>
21484 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21485 <td class="paramname"><em>input1</em>, </td>
21486 </tr>
21487 <tr>
21488 <td class="paramkey"></td>
21489 <td></td>
21490 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21491 <td class="paramname"><em>output</em>&#160;</td>
21492 </tr>
21493 <tr>
21494 <td></td>
21495 <td>)</td>
21496 <td></td><td></td>
21497 </tr>
21498 </table>
21499</div><div class="memdoc">
21500
21501<p class="definition">Definition at line <a class="el" href="_neon_greater_workload_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_neon_greater_workload_8cpp_source.xhtml">NeonGreaterWorkload.cpp</a>.</p>
21502
21503<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00198">NeonLayerSupport::IsComparisonSupported()</a>.</p>
21504<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEGreater::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21505</div>
21506</div>
21507<a id="aea722abe239545030f4c6fe4e083816f"></a>
21508<h2 class="memtitle"><span class="permalink"><a href="#aea722abe239545030f4c6fe4e083816f">&#9670;&nbsp;</a></span>NeonInstanceNormalizationWorkloadValidate()</h2>
21509
21510<div class="memitem">
21511<div class="memproto">
21512 <table class="memname">
21513 <tr>
21514 <td class="memname">arm_compute::Status NeonInstanceNormalizationWorkloadValidate </td>
21515 <td>(</td>
21516 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21517 <td class="paramname"><em>input</em>, </td>
21518 </tr>
21519 <tr>
21520 <td class="paramkey"></td>
21521 <td></td>
21522 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21523 <td class="paramname"><em>output</em>, </td>
21524 </tr>
21525 <tr>
21526 <td class="paramkey"></td>
21527 <td></td>
21528 <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
21529 <td class="paramname"><em>descriptor</em>&#160;</td>
21530 </tr>
21531 <tr>
21532 <td></td>
21533 <td>)</td>
21534 <td></td><td></td>
21535 </tr>
21536 </table>
21537</div><div class="memdoc">
21538
21539<p class="definition">Definition at line <a class="el" href="_neon_instance_normalization_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_neon_instance_normalization_workload_8cpp_source.xhtml">NeonInstanceNormalizationWorkload.cpp</a>.</p>
21540
21541<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00423">NeonLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
21542<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEInstanceNormalizationLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_Gamma,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_Beta,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Eps);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
21543</div>
21544</div>
21545<a id="ae838df3960d2b5d18d73ed2a07aee917"></a>
21546<h2 class="memtitle"><span class="permalink"><a href="#ae838df3960d2b5d18d73ed2a07aee917">&#9670;&nbsp;</a></span>NeonL2NormalizationWorkloadValidate()</h2>
21547
21548<div class="memitem">
21549<div class="memproto">
21550 <table class="memname">
21551 <tr>
21552 <td class="memname">arm_compute::Status NeonL2NormalizationWorkloadValidate </td>
21553 <td>(</td>
21554 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21555 <td class="paramname"><em>input</em>, </td>
21556 </tr>
21557 <tr>
21558 <td class="paramkey"></td>
21559 <td></td>
21560 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21561 <td class="paramname"><em>output</em>, </td>
21562 </tr>
21563 <tr>
21564 <td class="paramkey"></td>
21565 <td></td>
21566 <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
21567 <td class="paramname"><em>descriptor</em>&#160;</td>
21568 </tr>
21569 <tr>
21570 <td></td>
21571 <td>)</td>
21572 <td></td><td></td>
21573 </tr>
21574 </table>
21575</div><div class="memdoc">
21576
21577<p class="definition">Definition at line <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_neon_l2_normalization_float_workload_8cpp_source.xhtml">NeonL2NormalizationFloatWorkload.cpp</a>.</p>
21578
21579<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00435">NeonLayerSupport::IsL2NormalizationSupported()</a>.</p>
21580<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">int</span> axis = (descriptor.m_DataLayout == DataLayout::NCHW) ? 2 : 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> arm_compute::NEL2NormalizeLayer::validate(&amp;aclInput, &amp;aclOutput, axis, descriptor.m_Eps);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;}</div></div><!-- fragment -->
21581</div>
21582</div>
21583<a id="a9e06cc2a2ac8b88fc72972695a17910f"></a>
21584<h2 class="memtitle"><span class="permalink"><a href="#a9e06cc2a2ac8b88fc72972695a17910f">&#9670;&nbsp;</a></span>NeonLstmFloatWorkloadValidate()</h2>
21585
21586<div class="memitem">
21587<div class="memproto">
21588 <table class="memname">
21589 <tr>
21590 <td class="memname">arm_compute::Status NeonLstmFloatWorkloadValidate </td>
21591 <td>(</td>
21592 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21593 <td class="paramname"><em>input</em>, </td>
21594 </tr>
21595 <tr>
21596 <td class="paramkey"></td>
21597 <td></td>
21598 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21599 <td class="paramname"><em>outputStateIn</em>, </td>
21600 </tr>
21601 <tr>
21602 <td class="paramkey"></td>
21603 <td></td>
21604 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21605 <td class="paramname"><em>cellStateIn</em>, </td>
21606 </tr>
21607 <tr>
21608 <td class="paramkey"></td>
21609 <td></td>
21610 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21611 <td class="paramname"><em>scratchBuffer</em>, </td>
21612 </tr>
21613 <tr>
21614 <td class="paramkey"></td>
21615 <td></td>
21616 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21617 <td class="paramname"><em>outputStateOut</em>, </td>
21618 </tr>
21619 <tr>
21620 <td class="paramkey"></td>
21621 <td></td>
21622 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21623 <td class="paramname"><em>cellStateOut</em>, </td>
21624 </tr>
21625 <tr>
21626 <td class="paramkey"></td>
21627 <td></td>
21628 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21629 <td class="paramname"><em>output</em>, </td>
21630 </tr>
21631 <tr>
21632 <td class="paramkey"></td>
21633 <td></td>
21634 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
21635 <td class="paramname"><em>descriptor</em>, </td>
21636 </tr>
21637 <tr>
21638 <td class="paramkey"></td>
21639 <td></td>
21640 <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
21641 <td class="paramname"><em>paramsInfo</em>&#160;</td>
21642 </tr>
21643 <tr>
21644 <td></td>
21645 <td>)</td>
21646 <td></td><td></td>
21647 </tr>
21648 </table>
21649</div><div class="memdoc">
21650
21651<p class="definition">Definition at line <a class="el" href="_neon_lstm_float_workload_8cpp_source.xhtml#l00271">271</a> of file <a class="el" href="_neon_lstm_float_workload_8cpp_source.xhtml">NeonLstmFloatWorkload.cpp</a>.</p>
21652
21653<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00443">NeonLayerSupport::IsLstmSupported()</a>.</p>
21654<div class="fragment"><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; arm_compute::LSTMParams&lt;arm_compute::ITensorInfo&gt; lstm_params_info;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclScratchBufferInfo = BuildArmComputeTensorInfo(scratchBuffer);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</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; arm_compute::TensorInfo aclInputToInputWeightsInfo;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; arm_compute::TensorInfo aclRecurrentToInputWeightsInfo;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; arm_compute::TensorInfo aclCellToInputWeightsInfo;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; arm_compute::TensorInfo aclInputGateBiasInfo;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; arm_compute::TensorInfo aclProjectionWeightsInfo;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; arm_compute::TensorInfo aclProjectionBiasInfo;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; arm_compute::TensorInfo aclCellToForgetWeightsInfo;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; arm_compute::TensorInfo aclCellToOutputWeightsInfo;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; arm_compute::TensorInfo aclInputLayerNormWeightsInfo;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; arm_compute::TensorInfo aclForgetLayerNormWeightsInfo;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; arm_compute::TensorInfo aclCellLayerNormWeightsInfo;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; arm_compute::TensorInfo aclOutputLayerNormWeightsInfo;</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; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</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; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; aclCellToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToInputWeights());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; aclInputToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; aclRecurrentToInputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; aclInputGateBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; lstm_params_info.set_cifg_params(&amp;aclInputToInputWeightsInfo, &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; descriptor.m_PeepholeEnabled ? &amp;aclCellToInputWeightsInfo : <span class="keyword">nullptr</span>,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; &amp;aclInputGateBiasInfo);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (descriptor.m_ProjectionEnabled)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span>)</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; aclProjectionBiasInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionBias());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; aclProjectionWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetProjectionWeights());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; lstm_params_info.set_projection_params(&amp;aclProjectionWeightsInfo,</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; paramsInfo.m_ProjectionBias != <span class="keyword">nullptr</span> ?</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; &amp;aclProjectionBiasInfo : <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">if</span> (descriptor.m_PeepholeEnabled)</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; aclCellToForgetWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToForgetWeights());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; aclCellToOutputWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellToOutputWeights());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; lstm_params_info.set_peephole_params(&amp;aclCellToForgetWeightsInfo, &amp;aclCellToOutputWeightsInfo);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</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; <span class="keywordflow">if</span> (descriptor.m_LayerNormEnabled)</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; <span class="keywordflow">if</span> (!descriptor.m_CifgEnabled)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; aclInputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetInputLayerNormWeights());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; aclForgetLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetForgetLayerNormWeights());</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; aclCellLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetCellLayerNormWeights());</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; aclOutputLayerNormWeightsInfo = BuildArmComputeTensorInfo(paramsInfo.GetOutputLayerNormWeights());</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; lstm_params_info.set_layer_normalization_params(descriptor.m_CifgEnabled ?</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">nullptr</span> : &amp;aclInputLayerNormWeightsInfo,</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; &amp;aclForgetLayerNormWeightsInfo,</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; &amp;aclCellLayerNormWeightsInfo,</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; &amp;aclOutputLayerNormWeightsInfo);</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; <span class="keywordtype">float</span> cell_threshold = descriptor.m_ClippingThresCell;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">float</span> projection_threshold = descriptor.m_ClippingThresProj;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// for preparing the object for the class ActivationLayerInfo, we need to consider 5 situations</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; arm_compute::ActivationLayerInfo activationLayerInfo;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">switch</span> (descriptor.m_ActivationFunc)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="comment">// no activation, do nothing</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::RELU);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.0);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::TANH, 1.0, 1.0);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">case</span> 6:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; activationLayerInfo = arm_compute::ActivationLayerInfo(</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; arm_compute::ActivationLayerInfo::ActivationFunction::LOGISTIC);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(<span class="stringliteral">&quot;Wrong Type of Activation Function!&quot;</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">return</span> arm_compute::NELSTMLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; &amp;aclScratchBufferInfo,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; &amp;aclOutputStateOutInfo,</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; lstm_params_info,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; activationLayerInfo,</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; cell_threshold,</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; projection_threshold);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</a></div></div>
21655</div><!-- fragment -->
21656</div>
21657</div>
21658<a id="a8d2ea79addd8ef64be2ca0dad3408f00"></a>
21659<h2 class="memtitle"><span class="permalink"><a href="#a8d2ea79addd8ef64be2ca0dad3408f00">&#9670;&nbsp;</a></span>NeonMaximumWorkloadValidate()</h2>
21660
21661<div class="memitem">
21662<div class="memproto">
21663 <table class="memname">
21664 <tr>
21665 <td class="memname">arm_compute::Status NeonMaximumWorkloadValidate </td>
21666 <td>(</td>
21667 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21668 <td class="paramname"><em>input0</em>, </td>
21669 </tr>
21670 <tr>
21671 <td class="paramkey"></td>
21672 <td></td>
21673 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21674 <td class="paramname"><em>input1</em>, </td>
21675 </tr>
21676 <tr>
21677 <td class="paramkey"></td>
21678 <td></td>
21679 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21680 <td class="paramname"><em>output</em>&#160;</td>
21681 </tr>
21682 <tr>
21683 <td></td>
21684 <td>)</td>
21685 <td></td><td></td>
21686 </tr>
21687 </table>
21688</div><div class="memdoc">
21689
21690<p class="definition">Definition at line <a class="el" href="_neon_maximum_workload_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_neon_maximum_workload_8cpp_source.xhtml">NeonMaximumWorkload.cpp</a>.</p>
21691
21692<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00467">NeonLayerSupport::IsMaximumSupported()</a>.</p>
21693<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMax::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21694</div>
21695</div>
21696<a id="ab81dd6d40850f8fea025ee7ce51f86d0"></a>
21697<h2 class="memtitle"><span class="permalink"><a href="#ab81dd6d40850f8fea025ee7ce51f86d0">&#9670;&nbsp;</a></span>NeonMeanWorkloadValidate()</h2>
21698
21699<div class="memitem">
21700<div class="memproto">
21701 <table class="memname">
21702 <tr>
21703 <td class="memname">arm_compute::Status NeonMeanWorkloadValidate </td>
21704 <td>(</td>
21705 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21706 <td class="paramname"><em>input</em>, </td>
21707 </tr>
21708 <tr>
21709 <td class="paramkey"></td>
21710 <td></td>
21711 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21712 <td class="paramname"><em>output</em>, </td>
21713 </tr>
21714 <tr>
21715 <td class="paramkey"></td>
21716 <td></td>
21717 <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
21718 <td class="paramname"><em>desc</em>&#160;</td>
21719 </tr>
21720 <tr>
21721 <td></td>
21722 <td>)</td>
21723 <td></td><td></td>
21724 </tr>
21725 </table>
21726</div><div class="memdoc">
21727
21728<p class="definition">Definition at line <a class="el" href="_neon_mean_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_neon_mean_workload_8cpp_source.xhtml">NeonMeanWorkload.cpp</a>.</p>
21729
21730<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00479">NeonLayerSupport::IsMeanSupported()</a>.</p>
21731<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> coords = BuildArmComputeReductionCoordinates(aclInputInfo.num_dimensions(),</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; input.GetNumDimensions(),</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; desc.m_Axis);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> arm_compute::NEReduceMean::validate(&amp;aclInputInfo, coords, desc.m_KeepDims, &amp;aclOutputInfo);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
21732</div><!-- fragment -->
21733</div>
21734</div>
21735<a id="ab81159ebfa638af1b91fe1e8c5de1955"></a>
21736<h2 class="memtitle"><span class="permalink"><a href="#ab81159ebfa638af1b91fe1e8c5de1955">&#9670;&nbsp;</a></span>NeonMinimumWorkloadValidate()</h2>
21737
21738<div class="memitem">
21739<div class="memproto">
21740 <table class="memname">
21741 <tr>
21742 <td class="memname">arm_compute::Status NeonMinimumWorkloadValidate </td>
21743 <td>(</td>
21744 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21745 <td class="paramname"><em>input0</em>, </td>
21746 </tr>
21747 <tr>
21748 <td class="paramkey"></td>
21749 <td></td>
21750 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21751 <td class="paramname"><em>input1</em>, </td>
21752 </tr>
21753 <tr>
21754 <td class="paramkey"></td>
21755 <td></td>
21756 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21757 <td class="paramname"><em>output</em>&#160;</td>
21758 </tr>
21759 <tr>
21760 <td></td>
21761 <td>)</td>
21762 <td></td><td></td>
21763 </tr>
21764 </table>
21765</div><div class="memdoc">
21766
21767<p>Validate function for validating the inputs and output. </p>
21768<dl class="params"><dt>Parameters</dt><dd>
21769 <table class="params">
21770 <tr><td class="paramdir">[in]</td><td class="paramname">input0</td><td>The input0 value to be validated. </td></tr>
21771 <tr><td class="paramdir">[in]</td><td class="paramname">input1</td><td>The input1 value to be validated. </td></tr>
21772 <tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>The output value to be validated. </td></tr>
21773 </table>
21774 </dd>
21775</dl>
21776
21777<p class="definition">Definition at line <a class="el" href="_neon_minimum_workload_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_neon_minimum_workload_8cpp_source.xhtml">NeonMinimumWorkload.cpp</a>.</p>
21778
21779<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00499">NeonLayerSupport::IsMinimumSupported()</a>.</p>
21780<div class="fragment"><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="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> arm_compute::NEElementwiseMin::validate(&amp;aclInput0,</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
21781</div>
21782</div>
21783<a id="a38bdbed2a1e28ab15cac0cc0f42c3fa6"></a>
21784<h2 class="memtitle"><span class="permalink"><a href="#a38bdbed2a1e28ab15cac0cc0f42c3fa6">&#9670;&nbsp;</a></span>NeonMultiplicationWorkloadValidate()</h2>
21785
21786<div class="memitem">
21787<div class="memproto">
21788 <table class="memname">
21789 <tr>
21790 <td class="memname">arm_compute::Status NeonMultiplicationWorkloadValidate </td>
21791 <td>(</td>
21792 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21793 <td class="paramname"><em>input0</em>, </td>
21794 </tr>
21795 <tr>
21796 <td class="paramkey"></td>
21797 <td></td>
21798 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21799 <td class="paramname"><em>input1</em>, </td>
21800 </tr>
21801 <tr>
21802 <td class="paramkey"></td>
21803 <td></td>
21804 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21805 <td class="paramname"><em>output</em>&#160;</td>
21806 </tr>
21807 <tr>
21808 <td></td>
21809 <td>)</td>
21810 <td></td><td></td>
21811 </tr>
21812 </table>
21813</div><div class="memdoc">
21814
21815<p class="definition">Definition at line <a class="el" href="_neon_multiplication_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_multiplication_workload_8cpp_source.xhtml">NeonMultiplicationWorkload.cpp</a>.</p>
21816
21817<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00511">NeonLayerSupport::IsMultiplicationSupported()</a>.</p>
21818<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput2 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// At the time of writing, configure() will fail if a rounding policy other than TO_ZERO is supplied to it,</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">// when providing a scale of 1.0 for F32 tensors, even though the provided rounding policy appears to be</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="comment">// ignored for F32 tensors.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPixelWiseMultiplication::validate(&amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclInput2,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; 1.0f,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; arm_compute::ConvertPolicy::SATURATE,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; arm_compute::RoundingPolicy::TO_ZERO);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
21819</div>
21820</div>
21821<a id="a2ec6297db90d1d4c258c13d2d72b13d9"></a>
21822<h2 class="memtitle"><span class="permalink"><a href="#a2ec6297db90d1d4c258c13d2d72b13d9">&#9670;&nbsp;</a></span>NeonNormalizationWorkloadValidate()</h2>
21823
21824<div class="memitem">
21825<div class="memproto">
21826 <table class="memname">
21827 <tr>
21828 <td class="memname">arm_compute::Status NeonNormalizationWorkloadValidate </td>
21829 <td>(</td>
21830 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21831 <td class="paramname"><em>input</em>, </td>
21832 </tr>
21833 <tr>
21834 <td class="paramkey"></td>
21835 <td></td>
21836 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21837 <td class="paramname"><em>output</em>, </td>
21838 </tr>
21839 <tr>
21840 <td class="paramkey"></td>
21841 <td></td>
21842 <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
21843 <td class="paramname"><em>descriptor</em>&#160;</td>
21844 </tr>
21845 <tr>
21846 <td></td>
21847 <td>)</td>
21848 <td></td><td></td>
21849 </tr>
21850 </table>
21851</div><div class="memdoc">
21852
21853<p class="definition">Definition at line <a class="el" href="_neon_normalization_float_workload_8cpp_source.xhtml#l00047">47</a> of file <a class="el" href="_neon_normalization_float_workload_8cpp_source.xhtml">NeonNormalizationFloatWorkload.cpp</a>.</p>
21854
21855<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00535">NeonLayerSupport::IsNormalizationSupported()</a>.</p>
21856<div class="fragment"><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</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; arm_compute::NormalizationLayerInfo normalizationInfo = BuildArmComputeNormalizationLayerInfo(descriptor);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> arm_compute::NENormalizationLayer::validate(&amp;aclInput, &amp;aclOutput, normalizationInfo);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div></div><!-- fragment -->
21857</div>
21858</div>
21859<a id="a39209c0c078e83227222eb885317c2c5"></a>
21860<h2 class="memtitle"><span class="permalink"><a href="#a39209c0c078e83227222eb885317c2c5">&#9670;&nbsp;</a></span>NeonPadWorkloadValidate()</h2>
21861
21862<div class="memitem">
21863<div class="memproto">
21864 <table class="memname">
21865 <tr>
21866 <td class="memname">arm_compute::Status NeonPadWorkloadValidate </td>
21867 <td>(</td>
21868 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21869 <td class="paramname"><em>input</em>, </td>
21870 </tr>
21871 <tr>
21872 <td class="paramkey"></td>
21873 <td></td>
21874 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21875 <td class="paramname"><em>output</em>, </td>
21876 </tr>
21877 <tr>
21878 <td class="paramkey"></td>
21879 <td></td>
21880 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
21881 <td class="paramname"><em>descriptor</em>&#160;</td>
21882 </tr>
21883 <tr>
21884 <td></td>
21885 <td>)</td>
21886 <td></td><td></td>
21887 </tr>
21888 </table>
21889</div><div class="memdoc">
21890
21891<p class="definition">Definition at line <a class="el" href="_neon_pad_workload_8cpp_source.xhtml#l00048">48</a> of file <a class="el" href="_neon_pad_workload_8cpp_source.xhtml">NeonPadWorkload.cpp</a>.</p>
21892
21893<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00553">NeonLayerSupport::IsPadSupported()</a>.</p>
21894<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; std::vector&lt;std::pair&lt;unsigned int, unsigned int&gt;&gt; reversed_PadList(descriptor.m_PadList.size());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; std::reverse_copy(std::begin(descriptor.m_PadList),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::end(descriptor.m_PadList),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::begin(reversed_PadList));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; arm_compute::PaddingList padList = <span class="keyword">static_cast&lt;</span>arm_compute::PaddingList<span class="keyword">&gt;</span>(reversed_PadList);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPadLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, padList);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div></div><!-- fragment -->
21895</div>
21896</div>
21897<a id="a70650f6b1d3b8511fcdb989ca769cdbb"></a>
21898<h2 class="memtitle"><span class="permalink"><a href="#a70650f6b1d3b8511fcdb989ca769cdbb">&#9670;&nbsp;</a></span>NeonPermuteWorkloadValidate()</h2>
21899
21900<div class="memitem">
21901<div class="memproto">
21902 <table class="memname">
21903 <tr>
21904 <td class="memname">arm_compute::Status NeonPermuteWorkloadValidate </td>
21905 <td>(</td>
21906 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21907 <td class="paramname"><em>input</em>, </td>
21908 </tr>
21909 <tr>
21910 <td class="paramkey"></td>
21911 <td></td>
21912 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21913 <td class="paramname"><em>output</em>, </td>
21914 </tr>
21915 <tr>
21916 <td class="paramkey"></td>
21917 <td></td>
21918 <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
21919 <td class="paramname"><em>descriptor</em>&#160;</td>
21920 </tr>
21921 <tr>
21922 <td></td>
21923 <td>)</td>
21924 <td></td><td></td>
21925 </tr>
21926 </table>
21927</div><div class="memdoc">
21928
21929<p class="definition">Definition at line <a class="el" href="_neon_permute_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_permute_workload_8cpp_source.xhtml">NeonPermuteWorkload.cpp</a>.</p>
21930
21931<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00565">NeonLayerSupport::IsPermuteSupported()</a>.</p>
21932<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; armcomputetensorutils::BuildArmComputePermutationVector(mappings));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</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#l00173">Types.hpp:173</a></div></div>
21933</div><!-- fragment -->
21934</div>
21935</div>
21936<a id="a1f07655db8ad7f2738bb0d3d9e2316cc"></a>
21937<h2 class="memtitle"><span class="permalink"><a href="#a1f07655db8ad7f2738bb0d3d9e2316cc">&#9670;&nbsp;</a></span>NeonPooling2dWorkloadValidate()</h2>
21938
21939<div class="memitem">
21940<div class="memproto">
21941 <table class="memname">
21942 <tr>
21943 <td class="memname">arm_compute::Status NeonPooling2dWorkloadValidate </td>
21944 <td>(</td>
21945 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21946 <td class="paramname"><em>input</em>, </td>
21947 </tr>
21948 <tr>
21949 <td class="paramkey"></td>
21950 <td></td>
21951 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21952 <td class="paramname"><em>output</em>, </td>
21953 </tr>
21954 <tr>
21955 <td class="paramkey"></td>
21956 <td></td>
21957 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
21958 <td class="paramname"><em>descriptor</em>&#160;</td>
21959 </tr>
21960 <tr>
21961 <td></td>
21962 <td>)</td>
21963 <td></td><td></td>
21964 </tr>
21965 </table>
21966</div><div class="memdoc">
21967
21968<p class="definition">Definition at line <a class="el" href="_neon_pooling2d_workload_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_neon_pooling2d_workload_8cpp_source.xhtml">NeonPooling2dWorkload.cpp</a>.</p>
21969
21970<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00573">NeonLayerSupport::IsPooling2dSupported()</a>.</p>
21971<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo =</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::PoolingLayerInfo layerInfo = BuildArmComputePoolingLayerInfo(descriptor);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPoolingLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, layerInfo);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div></div><!-- fragment -->
21972</div>
21973</div>
21974<a id="a188adc104b16db3dc23ed2c5ff06cbb8"></a>
21975<h2 class="memtitle"><span class="permalink"><a href="#a188adc104b16db3dc23ed2c5ff06cbb8">&#9670;&nbsp;</a></span>NeonPreluWorkloadValidate()</h2>
21976
21977<div class="memitem">
21978<div class="memproto">
21979 <table class="memname">
21980 <tr>
21981 <td class="memname">arm_compute::Status NeonPreluWorkloadValidate </td>
21982 <td>(</td>
21983 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21984 <td class="paramname"><em>input</em>, </td>
21985 </tr>
21986 <tr>
21987 <td class="paramkey"></td>
21988 <td></td>
21989 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21990 <td class="paramname"><em>alpha</em>, </td>
21991 </tr>
21992 <tr>
21993 <td class="paramkey"></td>
21994 <td></td>
21995 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
21996 <td class="paramname"><em>output</em>&#160;</td>
21997 </tr>
21998 <tr>
21999 <td></td>
22000 <td>)</td>
22001 <td></td><td></td>
22002 </tr>
22003 </table>
22004</div><div class="memdoc">
22005
22006<p class="definition">Definition at line <a class="el" href="_neon_prelu_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_prelu_workload_8cpp_source.xhtml">NeonPreluWorkload.cpp</a>.</p>
22007
22008<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00581">NeonLayerSupport::IsPreluSupported()</a>.</p>
22009<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclAlpha = armcomputetensorutils::BuildArmComputeTensorInfo(alpha);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPReluLayer::validate(&amp;aclInput,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; &amp;aclAlpha,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; &amp;aclOutput);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div></div><!-- fragment -->
22010</div>
22011</div>
22012<a id="ae83632e641892ad2de78f316376f6bd0"></a>
22013<h2 class="memtitle"><span class="permalink"><a href="#ae83632e641892ad2de78f316376f6bd0">&#9670;&nbsp;</a></span>NeonQuantizedLstmWorkloadValidate()</h2>
22014
22015<div class="memitem">
22016<div class="memproto">
22017 <table class="memname">
22018 <tr>
22019 <td class="memname">arm_compute::Status NeonQuantizedLstmWorkloadValidate </td>
22020 <td>(</td>
22021 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22022 <td class="paramname"><em>input</em>, </td>
22023 </tr>
22024 <tr>
22025 <td class="paramkey"></td>
22026 <td></td>
22027 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22028 <td class="paramname"><em>cellStateIn</em>, </td>
22029 </tr>
22030 <tr>
22031 <td class="paramkey"></td>
22032 <td></td>
22033 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22034 <td class="paramname"><em>outputStateIn</em>, </td>
22035 </tr>
22036 <tr>
22037 <td class="paramkey"></td>
22038 <td></td>
22039 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22040 <td class="paramname"><em>cellStateOut</em>, </td>
22041 </tr>
22042 <tr>
22043 <td class="paramkey"></td>
22044 <td></td>
22045 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22046 <td class="paramname"><em>outputStateOut</em>, </td>
22047 </tr>
22048 <tr>
22049 <td class="paramkey"></td>
22050 <td></td>
22051 <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
22052 <td class="paramname"><em>paramsInfo</em>&#160;</td>
22053 </tr>
22054 <tr>
22055 <td></td>
22056 <td>)</td>
22057 <td></td><td></td>
22058 </tr>
22059 </table>
22060</div><div class="memdoc">
22061
22062<p class="definition">Definition at line <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.xhtml#l00130">130</a> of file <a class="el" href="_neon_quantized_lstm_workload_8cpp_source.xhtml">NeonQuantizedLstmWorkload.cpp</a>.</p>
22063
22064<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00599">NeonLayerSupport::IsQuantizedLstmSupported()</a>.</p>
22065<div class="fragment"><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;{</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="comment">// The inputs and outputs</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateInInfo = BuildArmComputeTensorInfo(cellStateIn);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateInInfo = BuildArmComputeTensorInfo(outputStateIn);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellStateOutInfo = BuildArmComputeTensorInfo(cellStateOut);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputStateOutInfo = BuildArmComputeTensorInfo(outputStateOut);</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; <span class="comment">// Basic parameters</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToInputWeightsInfo</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToInputWeights());</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToForgetWeightsInfo</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToForgetWeights());</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToCellWeightsInfo</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToCellWeights());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputToOutputWeightsInfo</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputToOutputWeights());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToInputWeightsInfo</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToInputWeights());</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToForgetWeightsInfo</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToForgetWeights());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToCellWeightsInfo</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToCellWeights());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclRecurrentToOutputWeightsInfo</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetRecurrentToOutputWeights());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputGateBiasInfo</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetInputGateBias());</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclForgetGateBiasInfo</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetForgetGateBias());</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclCellBiasInfo</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetCellBias());</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputGateBiasInfo</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; = BuildArmComputeTensorInfo(paramsInfo.GetOutputGateBias());</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> arm_compute::NELSTMLayerQuantized::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; &amp;aclInputToInputWeightsInfo,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; &amp;aclInputToForgetWeightsInfo,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &amp;aclInputToCellWeightsInfo,</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &amp;aclInputToOutputWeightsInfo,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; &amp;aclRecurrentToInputWeightsInfo,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; &amp;aclRecurrentToForgetWeightsInfo,</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; &amp;aclRecurrentToCellWeightsInfo,</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; &amp;aclRecurrentToOutputWeightsInfo,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; &amp;aclInputGateBiasInfo,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; &amp;aclForgetGateBiasInfo,</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; &amp;aclCellBiasInfo,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; &amp;aclOutputGateBiasInfo,</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; &amp;aclCellStateInInfo,</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; &amp;aclOutputStateInInfo,</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; &amp;aclCellStateOutInfo,</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; &amp;aclOutputStateOutInfo);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div></div><!-- fragment -->
22066</div>
22067</div>
22068<a id="a4d1e35c8bbe48e99dd522ac0f75f77d7"></a>
22069<h2 class="memtitle"><span class="permalink"><a href="#a4d1e35c8bbe48e99dd522ac0f75f77d7">&#9670;&nbsp;</a></span>NeonQuantizeWorkloadValidate()</h2>
22070
22071<div class="memitem">
22072<div class="memproto">
22073 <table class="memname">
22074 <tr>
22075 <td class="memname">arm_compute::Status NeonQuantizeWorkloadValidate </td>
22076 <td>(</td>
22077 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22078 <td class="paramname"><em>input</em>, </td>
22079 </tr>
22080 <tr>
22081 <td class="paramkey"></td>
22082 <td></td>
22083 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22084 <td class="paramname"><em>output</em>&#160;</td>
22085 </tr>
22086 <tr>
22087 <td></td>
22088 <td>)</td>
22089 <td></td><td></td>
22090 </tr>
22091 </table>
22092</div><div class="memdoc">
22093
22094<p class="definition">Definition at line <a class="el" href="_neon_quantize_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_neon_quantize_workload_8cpp_source.xhtml">NeonQuantizeWorkload.cpp</a>.</p>
22095
22096<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00589">NeonLayerSupport::IsQuantizeSupported()</a>.</p>
22097<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo neonOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NEQuantizationLayer::validate(&amp;neonInputInfo, &amp;neonOutputInfo);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div></div><!-- fragment -->
22098</div>
22099</div>
22100<a id="a430021076042c8157a926a3bb3a37152"></a>
22101<h2 class="memtitle"><span class="permalink"><a href="#a430021076042c8157a926a3bb3a37152">&#9670;&nbsp;</a></span>NeonReshapeWorkloadValidate()</h2>
22102
22103<div class="memitem">
22104<div class="memproto">
22105 <table class="memname">
22106 <tr>
22107 <td class="memname">arm_compute::Status NeonReshapeWorkloadValidate </td>
22108 <td>(</td>
22109 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22110 <td class="paramname"><em>input</em>, </td>
22111 </tr>
22112 <tr>
22113 <td class="paramkey"></td>
22114 <td></td>
22115 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22116 <td class="paramname"><em>output</em>&#160;</td>
22117 </tr>
22118 <tr>
22119 <td></td>
22120 <td>)</td>
22121 <td></td><td></td>
22122 </tr>
22123 </table>
22124</div><div class="memdoc">
22125
22126<p class="definition">Definition at line <a class="el" href="_neon_reshape_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_neon_reshape_workload_8cpp_source.xhtml">NeonReshapeWorkload.cpp</a>.</p>
22127
22128<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00617">NeonLayerSupport::IsReshapeSupported()</a>.</p>
22129<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEReshapeLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
22130</div>
22131</div>
22132<a id="a552d65f4e0a6c9e7c7796e77590063e9"></a>
22133<h2 class="memtitle"><span class="permalink"><a href="#a552d65f4e0a6c9e7c7796e77590063e9">&#9670;&nbsp;</a></span>NeonResizeWorkloadValidate()</h2>
22134
22135<div class="memitem">
22136<div class="memproto">
22137 <table class="memname">
22138 <tr>
22139 <td class="memname">arm_compute::Status NeonResizeWorkloadValidate </td>
22140 <td>(</td>
22141 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22142 <td class="paramname"><em>input</em>, </td>
22143 </tr>
22144 <tr>
22145 <td class="paramkey"></td>
22146 <td></td>
22147 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22148 <td class="paramname"><em>output</em>, </td>
22149 </tr>
22150 <tr>
22151 <td class="paramkey"></td>
22152 <td></td>
22153 <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
22154 <td class="paramname"><em>descriptor</em>&#160;</td>
22155 </tr>
22156 <tr>
22157 <td></td>
22158 <td>)</td>
22159 <td></td><td></td>
22160 </tr>
22161 </table>
22162</div><div class="memdoc">
22163
22164<p class="definition">Definition at line <a class="el" href="_neon_resize_workload_8cpp_source.xhtml#l00020">20</a> of file <a class="el" href="_neon_resize_workload_8cpp_source.xhtml">NeonResizeWorkload.cpp</a>.</p>
22165
22166<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00629">NeonLayerSupport::IsResizeSupported()</a>.</p>
22167<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">arm_compute::DataLayout</a> aclDataLayout = ConvertDataLayout(descriptor.m_DataLayout);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; aclInputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; aclOutputInfo.set_data_layout(aclDataLayout);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; arm_compute::InterpolationPolicy aclInterpolationPolicy =</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae9bdcb8ac91731109dc423d6ed476204">ConvertResizeMethodToAclInterpolationPolicy</a>(descriptor.m_Method);</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; <span class="keywordflow">return</span> arm_compute::NEScale::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInterpolationPolicy,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::BorderMode::REPLICATE,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; arm_compute::PixelValue(0.f),</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; arm_compute::SamplingPolicy::TOP_LEFT);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae9bdcb8ac91731109dc423d6ed476204"><div class="ttname"><a href="namespacearmnn.xhtml#ae9bdcb8ac91731109dc423d6ed476204">armnn::ConvertResizeMethodToAclInterpolationPolicy</a></div><div class="ttdeci">arm_compute::InterpolationPolicy ConvertResizeMethodToAclInterpolationPolicy(ResizeMethod resizeMethod)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00126">ArmComputeUtils.hpp:126</a></div></div>
22168<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
22169</div><!-- fragment -->
22170</div>
22171</div>
22172<a id="aa7d1b5e38aa8cb731519ff12e2a73350"></a>
22173<h2 class="memtitle"><span class="permalink"><a href="#aa7d1b5e38aa8cb731519ff12e2a73350">&#9670;&nbsp;</a></span>NeonRsqrtWorkloadValidate()</h2>
22174
22175<div class="memitem">
22176<div class="memproto">
22177 <table class="memname">
22178 <tr>
22179 <td class="memname">arm_compute::Status NeonRsqrtWorkloadValidate </td>
22180 <td>(</td>
22181 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22182 <td class="paramname"><em>input</em>, </td>
22183 </tr>
22184 <tr>
22185 <td class="paramkey"></td>
22186 <td></td>
22187 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22188 <td class="paramname"><em>output</em>&#160;</td>
22189 </tr>
22190 <tr>
22191 <td></td>
22192 <td>)</td>
22193 <td></td><td></td>
22194 </tr>
22195 </table>
22196</div><div class="memdoc">
22197
22198<p class="definition">Definition at line <a class="el" href="_neon_rsqrt_workload_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="_neon_rsqrt_workload_8cpp_source.xhtml">NeonRsqrtWorkload.cpp</a>.</p>
22199
22200<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00354">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
22201<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NERsqrtLayer::validate(&amp;aclInput, &amp;aclOutput);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;}</div></div><!-- fragment -->
22202</div>
22203</div>
22204<a id="a0a223c0997e3f7faa373ed55f954252b"></a>
22205<h2 class="memtitle"><span class="permalink"><a href="#a0a223c0997e3f7faa373ed55f954252b">&#9670;&nbsp;</a></span>NeonSliceWorkloadValidate()</h2>
22206
22207<div class="memitem">
22208<div class="memproto">
22209 <table class="memname">
22210 <tr>
22211 <td class="memname">arm_compute::Status NeonSliceWorkloadValidate </td>
22212 <td>(</td>
22213 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22214 <td class="paramname"><em>input</em>, </td>
22215 </tr>
22216 <tr>
22217 <td class="paramkey"></td>
22218 <td></td>
22219 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22220 <td class="paramname"><em>output</em>, </td>
22221 </tr>
22222 <tr>
22223 <td class="paramkey"></td>
22224 <td></td>
22225 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
22226 <td class="paramname"><em>descriptor</em>&#160;</td>
22227 </tr>
22228 <tr>
22229 <td></td>
22230 <td>)</td>
22231 <td></td><td></td>
22232 </tr>
22233 </table>
22234</div><div class="memdoc">
22235
22236<p class="definition">Definition at line <a class="el" href="_neon_slice_workload_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="_neon_slice_workload_8cpp_source.xhtml">NeonSliceWorkload.cpp</a>.</p>
22237
22238<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00664">NeonLayerSupport::IsSliceSupported()</a>.</p>
22239<div class="fragment"><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;{</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::tie(starts, ends) = <a class="code" href="namespacearmnn.xhtml#ab40e30cea5a328a3c35aa32f9b7db1c1">SetNeonSliceData</a>(descriptor.m_Begin, descriptor.m_Size);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> arm_compute::NESlice::validate(&amp;aclInputInfo, &amp;aclOutputInfo, starts, ends);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
22240<div class="ttc" id="namespacearmnn_xhtml_ab40e30cea5a328a3c35aa32f9b7db1c1"><div class="ttname"><a href="namespacearmnn.xhtml#ab40e30cea5a328a3c35aa32f9b7db1c1">armnn::SetNeonSliceData</a></div><div class="ttdeci">auto SetNeonSliceData(const std::vector&lt; unsigned int &gt; &amp;m_begin, const std::vector&lt; unsigned int &gt; &amp;m_size)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.xhtml#l00088">NeonWorkloadUtils.hpp:88</a></div></div>
22241</div><!-- fragment -->
22242</div>
22243</div>
22244<a id="a4077a9771ba9c551f4ce61863f65e798"></a>
22245<h2 class="memtitle"><span class="permalink"><a href="#a4077a9771ba9c551f4ce61863f65e798">&#9670;&nbsp;</a></span>NeonSoftmaxWorkloadValidate()</h2>
22246
22247<div class="memitem">
22248<div class="memproto">
22249 <table class="memname">
22250 <tr>
22251 <td class="memname">arm_compute::Status NeonSoftmaxWorkloadValidate </td>
22252 <td>(</td>
22253 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22254 <td class="paramname"><em>input</em>, </td>
22255 </tr>
22256 <tr>
22257 <td class="paramkey"></td>
22258 <td></td>
22259 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22260 <td class="paramname"><em>output</em>, </td>
22261 </tr>
22262 <tr>
22263 <td class="paramkey"></td>
22264 <td></td>
22265 <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
22266 <td class="paramname"><em>descriptor</em>&#160;</td>
22267 </tr>
22268 <tr>
22269 <td></td>
22270 <td>)</td>
22271 <td></td><td></td>
22272 </tr>
22273 </table>
22274</div><div class="memdoc">
22275
22276<p class="definition">Definition at line <a class="el" href="_neon_softmax_base_workload_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="_neon_softmax_base_workload_8cpp_source.xhtml">NeonSoftmaxBaseWorkload.cpp</a>.</p>
22277
22278<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00676">NeonLayerSupport::IsSoftmaxSupported()</a>.</p>
22279<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = <a class="code" href="namespacearmnn.xhtml#aa70ebe7b7898fe69ce24db803caa373e">ComputeSoftmaxAclAxis</a>(descriptor, input);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> arm_compute::NESoftmaxLayer::validate(&amp;aclInputInfo, &amp;aclOutputInfo, descriptor.m_Beta, aclAxis);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_aa70ebe7b7898fe69ce24db803caa373e"><div class="ttname"><a href="namespacearmnn.xhtml#aa70ebe7b7898fe69ce24db803caa373e">armnn::ComputeSoftmaxAclAxis</a></div><div class="ttdeci">unsigned int ComputeSoftmaxAclAxis(const SoftmaxDescriptor &amp;softmaxDesc, const armnn::TensorInfo &amp;tensor)</div><div class="ttdef"><b>Definition:</b> <a href="_arm_compute_utils_8hpp_source.xhtml#l00139">ArmComputeUtils.hpp:139</a></div></div>
22280</div><!-- fragment -->
22281</div>
22282</div>
22283<a id="ab29257da888af2c4971db1344d8a526c"></a>
22284<h2 class="memtitle"><span class="permalink"><a href="#ab29257da888af2c4971db1344d8a526c">&#9670;&nbsp;</a></span>NeonSpaceToBatchNdWorkloadValidate()</h2>
22285
22286<div class="memitem">
22287<div class="memproto">
22288 <table class="memname">
22289 <tr>
22290 <td class="memname">arm_compute::Status NeonSpaceToBatchNdWorkloadValidate </td>
22291 <td>(</td>
22292 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22293 <td class="paramname"><em>input</em>, </td>
22294 </tr>
22295 <tr>
22296 <td class="paramkey"></td>
22297 <td></td>
22298 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22299 <td class="paramname"><em>output</em>, </td>
22300 </tr>
22301 <tr>
22302 <td class="paramkey"></td>
22303 <td></td>
22304 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
22305 <td class="paramname"><em>descriptor</em>&#160;</td>
22306 </tr>
22307 <tr>
22308 <td></td>
22309 <td>)</td>
22310 <td></td><td></td>
22311 </tr>
22312 </table>
22313</div><div class="memdoc">
22314
22315<p class="definition">Definition at line <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.xhtml">NeonSpaceToBatchNdWorkload.cpp</a>.</p>
22316
22317<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00684">NeonLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
22318<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="comment">// ArmNN blockShape is [H, W] Cl asks for W, H</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; int32_t blockHeight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockShape[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; int32_t blockWidth = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockShape[1]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; arm_compute::Size2D paddingLeftTop = BuildArmComputeSize2D(</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; descriptor.m_PadList[1].first, descriptor.m_PadList[0].first);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; arm_compute::Size2D paddingRightBottom = BuildArmComputeSize2D(</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_PadList[1].second, descriptor.m_PadList[0].second);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToBatchLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; blockWidth,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; blockHeight,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; paddingLeftTop,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; paddingRightBottom,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; &amp;aclOutputInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
22319</div><!-- fragment -->
22320</div>
22321</div>
22322<a id="af6d2d40482240def4614deb694933d1e"></a>
22323<h2 class="memtitle"><span class="permalink"><a href="#af6d2d40482240def4614deb694933d1e">&#9670;&nbsp;</a></span>NeonSpaceToDepthWorkloadValidate()</h2>
22324
22325<div class="memitem">
22326<div class="memproto">
22327 <table class="memname">
22328 <tr>
22329 <td class="memname">arm_compute::Status NeonSpaceToDepthWorkloadValidate </td>
22330 <td>(</td>
22331 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22332 <td class="paramname"><em>input</em>, </td>
22333 </tr>
22334 <tr>
22335 <td class="paramkey"></td>
22336 <td></td>
22337 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22338 <td class="paramname"><em>output</em>, </td>
22339 </tr>
22340 <tr>
22341 <td class="paramkey"></td>
22342 <td></td>
22343 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
22344 <td class="paramname"><em>descriptor</em>&#160;</td>
22345 </tr>
22346 <tr>
22347 <td></td>
22348 <td>)</td>
22349 <td></td><td></td>
22350 </tr>
22351 </table>
22352</div><div class="memdoc">
22353
22354<p class="definition">Definition at line <a class="el" href="_neon_space_to_depth_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_space_to_depth_workload_8cpp_source.xhtml">NeonSpaceToDepthWorkload.cpp</a>.</p>
22355
22356<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
22357
22358<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00696">NeonLayerSupport::IsSpaceToDepthSupported()</a>.</p>
22359<div class="fragment"><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; <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a> dataLayout = descriptor.m_DataLayout;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, dataLayout);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, dataLayout);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; int32_t blockSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;int32_t&gt;(descriptor.m_BlockSize);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NESpaceToDepthLayer::validate(&amp;aclInput, &amp;aclOutput, blockSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a></div><div class="ttdeci">DataLayout</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00049">Types.hpp:49</a></div></div>
22360<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
22361</div><!-- fragment -->
22362</div>
22363</div>
22364<a id="aab5ea316b3decb05430323d847e3a773"></a>
22365<h2 class="memtitle"><span class="permalink"><a href="#aab5ea316b3decb05430323d847e3a773">&#9670;&nbsp;</a></span>NeonSplitterWorkloadValidate()</h2>
22366
22367<div class="memitem">
22368<div class="memproto">
22369 <table class="memname">
22370 <tr>
22371 <td class="memname">arm_compute::Status NeonSplitterWorkloadValidate </td>
22372 <td>(</td>
22373 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22374 <td class="paramname"><em>input</em>, </td>
22375 </tr>
22376 <tr>
22377 <td class="paramkey"></td>
22378 <td></td>
22379 <td class="paramtype">const std::vector&lt; std::reference_wrapper&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt;&gt; &amp;&#160;</td>
22380 <td class="paramname"><em>outputs</em>, </td>
22381 </tr>
22382 <tr>
22383 <td class="paramkey"></td>
22384 <td></td>
22385 <td class="paramtype">unsigned int&#160;</td>
22386 <td class="paramname"><em>splitAxis</em>&#160;</td>
22387 </tr>
22388 <tr>
22389 <td></td>
22390 <td>)</td>
22391 <td></td><td></td>
22392 </tr>
22393 </table>
22394</div><div class="memdoc">
22395
22396<p class="definition">Definition at line <a class="el" href="_neon_splitter_workload_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_neon_splitter_workload_8cpp_source.xhtml">NeonSplitterWorkload.cpp</a>.</p>
22397
22398<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00719">NeonLayerSupport::IsSplitterSupported()</a>.</p>
22399<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input);</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="keywordtype">size_t</span> numOutputs = outputs.size();</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; std::vector&lt;arm_compute::TensorInfo&gt; aclOutputs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; aclOutputs.reserve(numOutputs);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::vector&lt;arm_compute::ITensorInfo*&gt; aclOutputPtr;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclOutputPtr.reserve(numOutputs);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0u; i &lt; outputs.size(); ++i)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; aclOutputs.emplace_back(BuildArmComputeTensorInfo(outputs[i]));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; aclOutputPtr.emplace_back(&amp;aclOutputs.back());</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;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> aclAxis = CalcAclAxis(input.GetNumDimensions(), splitAxis);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> arm_compute::NESplit::validate(&amp;aclInputInfo, aclOutputPtr, aclAxis);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div></div><!-- fragment -->
22400</div>
22401</div>
22402<a id="a65c83c74bdbd66cdd547d331998952eb"></a>
22403<h2 class="memtitle"><span class="permalink"><a href="#a65c83c74bdbd66cdd547d331998952eb">&#9670;&nbsp;</a></span>NeonStackWorkloadValidate()</h2>
22404
22405<div class="memitem">
22406<div class="memproto">
22407 <table class="memname">
22408 <tr>
22409 <td class="memname">arm_compute::Status NeonStackWorkloadValidate </td>
22410 <td>(</td>
22411 <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
22412 <td class="paramname"><em>inputs</em>, </td>
22413 </tr>
22414 <tr>
22415 <td class="paramkey"></td>
22416 <td></td>
22417 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22418 <td class="paramname"><em>output</em>, </td>
22419 </tr>
22420 <tr>
22421 <td class="paramkey"></td>
22422 <td></td>
22423 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
22424 <td class="paramname"><em>descriptor</em>&#160;</td>
22425 </tr>
22426 <tr>
22427 <td></td>
22428 <td>)</td>
22429 <td></td><td></td>
22430 </tr>
22431 </table>
22432</div><div class="memdoc">
22433
22434<p class="definition">Definition at line <a class="el" href="_neon_stack_workload_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_neon_stack_workload_8cpp_source.xhtml">NeonStackWorkload.cpp</a>.</p>
22435
22436<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00752">NeonLayerSupport::IsStackSupported()</a>.</p>
22437<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;arm_compute::TensorInfo&gt; aclInputs;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> TensorInfo* input : inputs)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(*input, <a class="code" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; aclInputs.emplace_back(aclInputInfo);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; }</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; std::vector&lt;arm_compute::ITensorInfo*&gt; aclInputPtrs;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span> (arm_compute::ITensorInfo&amp; input : aclInputs)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; aclInputPtrs.emplace_back(&amp;input);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">int</span> aclAxis = CalcAxis(descriptor.m_Axis, descriptor.m_InputShape.GetNumDimensions());</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> arm_compute::NEStackLayer::validate(aclInputPtrs, aclAxis, &amp;aclOutputInfo);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
22438</div><!-- fragment -->
22439</div>
22440</div>
22441<a id="ac71d08bf1257807c112b4d019802acc3"></a>
22442<h2 class="memtitle"><span class="permalink"><a href="#ac71d08bf1257807c112b4d019802acc3">&#9670;&nbsp;</a></span>NeonStridedSliceWorkloadValidate()</h2>
22443
22444<div class="memitem">
22445<div class="memproto">
22446 <table class="memname">
22447 <tr>
22448 <td class="memname">arm_compute::Status NeonStridedSliceWorkloadValidate </td>
22449 <td>(</td>
22450 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22451 <td class="paramname"><em>input</em>, </td>
22452 </tr>
22453 <tr>
22454 <td class="paramkey"></td>
22455 <td></td>
22456 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22457 <td class="paramname"><em>output</em>, </td>
22458 </tr>
22459 <tr>
22460 <td class="paramkey"></td>
22461 <td></td>
22462 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
22463 <td class="paramname"><em>descriptor</em>&#160;</td>
22464 </tr>
22465 <tr>
22466 <td></td>
22467 <td>)</td>
22468 <td></td><td></td>
22469 </tr>
22470 </table>
22471</div><div class="memdoc">
22472
22473<p class="definition">Definition at line <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml">NeonStridedSliceWorkload.cpp</a>.</p>
22474
22475<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00764">NeonLayerSupport::IsStridedSliceSupported()</a>.</p>
22476<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; std::tie(starts, ends, strides) = <a class="code" href="namespacearmnn.xhtml#a01d1e745f360ccd0b655214645bcef32">SetNeonStridedSliceData</a>(descriptor.m_Begin,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; descriptor.m_End,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; descriptor.m_Stride);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">auto</span> numDimensions = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(input.GetNumDimensions());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; int32_t begin_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_BeginMask, numDimensions);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; int32_t end_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_EndMask, numDimensions);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; int32_t shrink_axis_mask = <a class="code" href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">ConvertMaskToACLFormat</a>(descriptor.m_ShrinkAxisMask, numDimensions);</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> arm_compute::NEStridedSlice::validate(&amp;aclInput,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; starts,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; ends,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; strides,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; begin_mask,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; end_mask,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; shrink_axis_mask);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
22477<div class="ttc" id="namespacearmnn_xhtml_a01d1e745f360ccd0b655214645bcef32"><div class="ttname"><a href="namespacearmnn.xhtml#a01d1e745f360ccd0b655214645bcef32">armnn::SetNeonStridedSliceData</a></div><div class="ttdeci">auto SetNeonStridedSliceData(const std::vector&lt; int &gt; &amp;m_begin, const std::vector&lt; int &gt; &amp;m_end, const std::vector&lt; int &gt; &amp;m_stride)</div><div class="ttdef"><b>Definition:</b> <a href="_neon_workload_utils_8hpp_source.xhtml#l00066">NeonWorkloadUtils.hpp:66</a></div></div>
22478<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
22479<div class="ttc" id="namespacearmnn_xhtml_ad69ffa576a596b9eb20ab6a41420c541"><div class="ttname"><a href="namespacearmnn.xhtml#ad69ffa576a596b9eb20ab6a41420c541">armnn::ConvertMaskToACLFormat</a></div><div class="ttdeci">int32_t ConvertMaskToACLFormat(int32_t mask, int32_t numDim)</div><div class="ttdef"><b>Definition:</b> <a href="_workload_utils_8cpp_source.xhtml#l00192">WorkloadUtils.cpp:192</a></div></div>
22480</div><!-- fragment -->
22481</div>
22482</div>
22483<a id="a73c15f02c46f64c1adf0fafb4c7c2cac"></a>
22484<h2 class="memtitle"><span class="permalink"><a href="#a73c15f02c46f64c1adf0fafb4c7c2cac">&#9670;&nbsp;</a></span>NeonSubtractionWorkloadValidate()</h2>
22485
22486<div class="memitem">
22487<div class="memproto">
22488 <table class="memname">
22489 <tr>
22490 <td class="memname">arm_compute::Status NeonSubtractionWorkloadValidate </td>
22491 <td>(</td>
22492 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22493 <td class="paramname"><em>input0</em>, </td>
22494 </tr>
22495 <tr>
22496 <td class="paramkey"></td>
22497 <td></td>
22498 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22499 <td class="paramname"><em>input1</em>, </td>
22500 </tr>
22501 <tr>
22502 <td class="paramkey"></td>
22503 <td></td>
22504 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22505 <td class="paramname"><em>output</em>&#160;</td>
22506 </tr>
22507 <tr>
22508 <td></td>
22509 <td>)</td>
22510 <td></td><td></td>
22511 </tr>
22512 </table>
22513</div><div class="memdoc">
22514
22515<p class="definition">Definition at line <a class="el" href="_neon_subtraction_workload_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_neon_subtraction_workload_8cpp_source.xhtml">NeonSubtractionWorkload.cpp</a>.</p>
22516
22517<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00776">NeonLayerSupport::IsSubtractionSupported()</a>.</p>
22518<div class="fragment"><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput0 = armcomputetensorutils::BuildArmComputeTensorInfo(input0);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInput1 = armcomputetensorutils::BuildArmComputeTensorInfo(input1);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> arm_compute::NEArithmeticSubtraction::validate(&amp;aclInput0,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; &amp;aclInput1,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; &amp;aclOutput,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; arm_compute::ConvertPolicy::SATURATE);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
22519</div>
22520</div>
22521<a id="aad5d4888304a57fb22c4608dc5d94dc1"></a>
22522<h2 class="memtitle"><span class="permalink"><a href="#aad5d4888304a57fb22c4608dc5d94dc1">&#9670;&nbsp;</a></span>NeonTensorHandleFactoryId()</h2>
22523
22524<div class="memitem">
22525<div class="memproto">
22526 <table class="memname">
22527 <tr>
22528 <td class="memname">constexpr const char* armnn::NeonTensorHandleFactoryId </td>
22529 <td>(</td>
22530 <td class="paramname"></td><td>)</td>
22531 <td></td>
22532 </tr>
22533 </table>
22534</div><div class="memdoc">
22535
22536<p class="definition">Definition at line <a class="el" href="_neon_tensor_handle_factory_8hpp_source.xhtml#l00014">14</a> of file <a class="el" href="_neon_tensor_handle_factory_8hpp_source.xhtml">NeonTensorHandleFactory.hpp</a>.</p>
22537
22538<p class="reference">Referenced by <a class="el" href="_neon_tensor_handle_factory_8cpp_source.xhtml#l00084">NeonTensorHandleFactory::GetIdStatic()</a>.</p>
22539<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Neon/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
22540</div>
22541</div>
22542<a id="abc73c3c9a09f91c22c64d7c166e9be4d"></a>
22543<h2 class="memtitle"><span class="permalink"><a href="#abc73c3c9a09f91c22c64d7c166e9be4d">&#9670;&nbsp;</a></span>NeonTransposeConvolution2dWorkloadValidate()</h2>
22544
22545<div class="memitem">
22546<div class="memproto">
22547 <table class="memname">
22548 <tr>
22549 <td class="memname">arm_compute::Status NeonTransposeConvolution2dWorkloadValidate </td>
22550 <td>(</td>
22551 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22552 <td class="paramname"><em>input</em>, </td>
22553 </tr>
22554 <tr>
22555 <td class="paramkey"></td>
22556 <td></td>
22557 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22558 <td class="paramname"><em>output</em>, </td>
22559 </tr>
22560 <tr>
22561 <td class="paramkey"></td>
22562 <td></td>
22563 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
22564 <td class="paramname"><em>descriptor</em>, </td>
22565 </tr>
22566 <tr>
22567 <td class="paramkey"></td>
22568 <td></td>
22569 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22570 <td class="paramname"><em>weights</em>, </td>
22571 </tr>
22572 <tr>
22573 <td class="paramkey"></td>
22574 <td></td>
22575 <td class="paramtype">const <a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &gt; &amp;&#160;</td>
22576 <td class="paramname"><em>biases</em>&#160;</td>
22577 </tr>
22578 <tr>
22579 <td></td>
22580 <td>)</td>
22581 <td></td><td></td>
22582 </tr>
22583 </table>
22584</div><div class="memdoc">
22585
22586<p class="definition">Definition at line <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.xhtml#l00026">26</a> of file <a class="el" href="_neon_transpose_convolution2d_workload_8cpp_source.xhtml">NeonTransposeConvolution2dWorkload.cpp</a>.</p>
22587
22588<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00788">NeonLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
22589<div class="fragment"><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclWeightsInfo = BuildArmComputeTensorInfo(weights, descriptor.m_DataLayout);</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; arm_compute::TensorInfo aclBiasesInfo;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; arm_compute::TensorInfo *optionalAclBiasesInfo = <span class="keyword">nullptr</span>;</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; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(biases.has_value());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; aclBiasesInfo = BuildArmComputeTensorInfo(biases.value(), descriptor.m_DataLayout);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; optionalAclBiasesInfo = &amp;aclBiasesInfo;</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"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; arm_compute::PadStrideInfo layerInfo = BuildArmComputePadStrideInfo(descriptor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> arm_compute::NEDeconvolutionLayer::validate(&amp;aclInputInfo,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;aclWeightsInfo,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; optionalAclBiasesInfo,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; &amp;aclOutputInfo,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; layerInfo);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div></div><!-- fragment -->
22590</div>
22591</div>
22592<a id="a2b8555526752015115fa7fa00d88542b"></a>
22593<h2 class="memtitle"><span class="permalink"><a href="#a2b8555526752015115fa7fa00d88542b">&#9670;&nbsp;</a></span>NeonTransposeWorkloadValidate()</h2>
22594
22595<div class="memitem">
22596<div class="memproto">
22597 <table class="memname">
22598 <tr>
22599 <td class="memname">arm_compute::Status NeonTransposeWorkloadValidate </td>
22600 <td>(</td>
22601 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22602 <td class="paramname"><em>input</em>, </td>
22603 </tr>
22604 <tr>
22605 <td class="paramkey"></td>
22606 <td></td>
22607 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
22608 <td class="paramname"><em>output</em>, </td>
22609 </tr>
22610 <tr>
22611 <td class="paramkey"></td>
22612 <td></td>
22613 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;&#160;</td>
22614 <td class="paramname"><em>descriptor</em>&#160;</td>
22615 </tr>
22616 <tr>
22617 <td></td>
22618 <td>)</td>
22619 <td></td><td></td>
22620 </tr>
22621 </table>
22622</div><div class="memdoc">
22623
22624<p class="definition">Definition at line <a class="el" href="_neon_transpose_workload_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_neon_transpose_workload_8cpp_source.xhtml">NeonTransposeWorkload.cpp</a>.</p>
22625
22626<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00804">NeonLayerSupport::IsTransposeSupported()</a>.</p>
22627<div class="fragment"><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">const</span> arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_permutation_vector.xhtml">armnn::PermutationVector</a>&amp; mappings = descriptor.m_DimMappings;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> arm_compute::NEPermute::validate(&amp;aclInputInfo, &amp;aclOutputInfo,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; armcomputetensorutils::BuildArmComputeTransposeVector(mappings));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;}</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#l00173">Types.hpp:173</a></div></div>
22628</div><!-- fragment -->
22629</div>
22630</div>
22631<a id="a869f740e9c2fcb8642350c6e3d0b3742"></a>
22632<h2 class="memtitle"><span class="permalink"><a href="#a869f740e9c2fcb8642350c6e3d0b3742">&#9670;&nbsp;</a></span>NextIndex()</h2>
22633
22634<div class="memitem">
22635<div class="memproto">
22636 <table class="memname">
22637 <tr>
22638 <td class="memname">bool armnn::NextIndex </td>
22639 <td>(</td>
22640 <td class="paramtype">const unsigned int&#160;</td>
22641 <td class="paramname"><em>numDims</em>, </td>
22642 </tr>
22643 <tr>
22644 <td class="paramkey"></td>
22645 <td></td>
22646 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
22647 <td class="paramname"><em>dims</em>, </td>
22648 </tr>
22649 <tr>
22650 <td class="paramkey"></td>
22651 <td></td>
22652 <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
22653 <td class="paramname"><em>current</em>&#160;</td>
22654 </tr>
22655 <tr>
22656 <td></td>
22657 <td>)</td>
22658 <td></td><td></td>
22659 </tr>
22660 </table>
22661</div><div class="memdoc">
22662
22663<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00018">18</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml">Mean.cpp</a>.</p>
22664
22665<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean()</a>.</p>
22666<div class="fragment"><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;{</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> carry = 1;</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = numDims; idx-- &gt; 0; )</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_val = current[idx] + carry;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (dims[idx] == current_val)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; current[idx] = 0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; current[idx] = current_val;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; carry = 0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> (carry == 0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div></div><!-- fragment -->
22667</div>
22668</div>
22669<a id="ac8c641d4a69c9a85c487cfbc7ea4d73c"></a>
22670<h2 class="memtitle"><span class="permalink"><a href="#ac8c641d4a69c9a85c487cfbc7ea4d73c">&#9670;&nbsp;</a></span>NonMaxSuppression()</h2>
22671
22672<div class="memitem">
22673<div class="memproto">
22674 <table class="memname">
22675 <tr>
22676 <td class="memname">std::vector&lt; unsigned int &gt; NonMaxSuppression </td>
22677 <td>(</td>
22678 <td class="paramtype">unsigned int&#160;</td>
22679 <td class="paramname"><em>numBoxes</em>, </td>
22680 </tr>
22681 <tr>
22682 <td class="paramkey"></td>
22683 <td></td>
22684 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
22685 <td class="paramname"><em>boxCorners</em>, </td>
22686 </tr>
22687 <tr>
22688 <td class="paramkey"></td>
22689 <td></td>
22690 <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
22691 <td class="paramname"><em>scores</em>, </td>
22692 </tr>
22693 <tr>
22694 <td class="paramkey"></td>
22695 <td></td>
22696 <td class="paramtype">float&#160;</td>
22697 <td class="paramname"><em>nmsScoreThreshold</em>, </td>
22698 </tr>
22699 <tr>
22700 <td class="paramkey"></td>
22701 <td></td>
22702 <td class="paramtype">unsigned int&#160;</td>
22703 <td class="paramname"><em>maxDetection</em>, </td>
22704 </tr>
22705 <tr>
22706 <td class="paramkey"></td>
22707 <td></td>
22708 <td class="paramtype">float&#160;</td>
22709 <td class="paramname"><em>nmsIouThreshold</em>&#160;</td>
22710 </tr>
22711 <tr>
22712 <td></td>
22713 <td>)</td>
22714 <td></td><td></td>
22715 </tr>
22716 </table>
22717</div><div class="memdoc">
22718
22719<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">50</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
22720
22721<p class="reference">References <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00018">GenerateRangeK()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00031">IntersectionOverUnion()</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00025">TopKSort()</a>.</p>
22722
22723<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.xhtml#l00050">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>.</p>
22724<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// Select boxes that have scores above a given threshold.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::vector&lt;float&gt; scoresAboveThreshold;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::vector&lt;unsigned int&gt; indicesAboveThreshold;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numBoxes; ++i)</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">if</span> (<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>[i] &gt;= nmsScoreThreshold)</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; scoresAboveThreshold.push_back(<a class="code" href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a>[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; indicesAboveThreshold.push_back(i);</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="comment">// Sort the indices based on scores.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numAboveThreshold = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(scoresAboveThreshold.size());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; std::vector&lt;unsigned int&gt; sortedIndices = <a class="code" href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">GenerateRangeK</a>(numAboveThreshold);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">TopKSort</a>(numAboveThreshold, sortedIndices.data(), scoresAboveThreshold.data(), numAboveThreshold);</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="comment">// Number of output cannot be more than max detections specified in the option.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutput = std::min(maxDetection, numAboveThreshold);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; std::vector&lt;unsigned int&gt; outputIndices;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; std::vector&lt;bool&gt; visited(numAboveThreshold, <span class="keyword">false</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// Prune out the boxes with high intersection over union by keeping the box with higher score.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numAboveThreshold; ++i)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (outputIndices.size() &gt;= numOutput)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">if</span> (!visited[sortedIndices[i]])</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; outputIndices.push_back(indicesAboveThreshold[sortedIndices[i]]);</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"> 90</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i + 1; j &lt; numAboveThreshold; ++j)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iIndex = indicesAboveThreshold[sortedIndices[i]] * 4;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> jIndex = indicesAboveThreshold[sortedIndices[j]] * 4;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#abf6aad7bc221f8ad22b4d99cd020373b">IntersectionOverUnion</a>(&amp;boxCorners[iIndex], &amp;boxCorners[jIndex]) &gt; nmsIouThreshold)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; visited[sortedIndices[j]] = <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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">return</span> outputIndices;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_abf6aad7bc221f8ad22b4d99cd020373b"><div class="ttname"><a href="namespacearmnn.xhtml#abf6aad7bc221f8ad22b4d99cd020373b">armnn::IntersectionOverUnion</a></div><div class="ttdeci">float IntersectionOverUnion(const float *boxI, const float *boxJ)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00031">DetectionPostProcess.cpp:31</a></div></div>
22725<div class="ttc" id="namespacearmnn_xhtml_ae8ed5c640761fb6744aec0ee16388417"><div class="ttname"><a href="namespacearmnn.xhtml#ae8ed5c640761fb6744aec0ee16388417">armnn::GenerateRangeK</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; GenerateRangeK(unsigned int k)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00018">DetectionPostProcess.cpp:18</a></div></div>
22726<div class="ttc" id="namespacearmnn_xhtml_a2748f45e58b1c612d473043f711d1434"><div class="ttname"><a href="namespacearmnn.xhtml#a2748f45e58b1c612d473043f711d1434">armnn::TopKSort</a></div><div class="ttdeci">void TopKSort(unsigned int k, unsigned int *indices, const float *values, unsigned int numElement)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00025">DetectionPostProcess.cpp:25</a></div></div>
22727<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
22728<div class="ttc" id="_neon_end_to_end_tests_8cpp_xhtml_a0348e6bb67ace72535bd105219bb6237"><div class="ttname"><a href="_neon_end_to_end_tests_8cpp.xhtml#a0348e6bb67ace72535bd105219bb6237">scores</a></div><div class="ttdeci">std::vector&lt; float &gt; scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })</div></div>
22729</div><!-- fragment -->
22730</div>
22731</div>
22732<a id="a37fa39012e90d568df7f774cd6d1e956"></a>
22733<h2 class="memtitle"><span class="permalink"><a href="#a37fa39012e90d568df7f774cd6d1e956">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[1/4]</span></h2>
22734
22735<div class="memitem">
22736<div class="memproto">
22737 <table class="memname">
22738 <tr>
22739 <td class="memname">std::enable_if_t&lt; std::is_unsigned&lt;Source&gt;::value &amp;&amp; std::is_unsigned&lt;Dest&gt;::value , Dest&gt; armnn::numeric_cast </td>
22740 <td>(</td>
22741 <td class="paramtype">Source&#160;</td>
22742 <td class="paramname"><em>source</em></td><td>)</td>
22743 <td></td>
22744 </tr>
22745 </table>
22746</div><div class="memdoc">
22747
22748<p class="definition">Definition at line <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_numeric_cast_8hpp_source.xhtml">NumericCast.hpp</a>.</p>
22749
22750<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
22751
22752<p class="reference">Referenced by <a class="el" href="_caffe_parser_8cpp_source.xhtml#l00611">CaffeParserBase::AddConvLayerWithDepthwiseConv()</a>, <a class="el" href="_caffe_parser_8cpp_source.xhtml#l00419">CaffeParserBase::AddConvLayerWithSplits()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00103">AllocateOutputData()</a>, <a class="el" href="_arg_min_max_8cpp_source.xhtml#l00015">ArgMinMax()</a>, <a class="el" href="_subgraph_view_tests_8cpp_source.xhtml#l01337">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_profiling_utils_8cpp_source.xhtml#l00310">armnn::profiling::CalculateSizeOfPaddedSwString()</a>, <a class="el" href="_cl_arg_min_max_workload_8cpp_source.xhtml#l00054">ClArgMinMaxWorkload::ClArgMinMaxWorkload()</a>, <a class="el" href="_file_only_profiling_connection_8cpp_source.xhtml#l00032">FileOnlyProfilingConnection::Close()</a>, <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.xhtml#l00047">ClSpaceToBatchNdWorkload::ClSpaceToBatchNdWorkload()</a>, <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>, <a class="el" href="_activation_test_impl_8cpp_source.xhtml#l01142">CompareActivationTestImpl()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00079">OutputSlot::Connect()</a>, <a class="el" href="_inference_model_8hpp_source.xhtml#l00116">CreateNetworkImpl&lt; IParser &gt;::Create()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00174">SendCounterPacket::CreateCategoryRecord()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00376">SendCounterPacket::CreateEventRecord()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.xhtml#l00605">TfLiteParser::CreateNetworkFromBinary()</a>, <a class="el" href="_record_by_record_caffe_parser_8cpp_source.xhtml#l00464">RecordByRecordCaffeParser::CreateNetworkFromBinaryFile()</a>, <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l01381">DepthwiseConvolution2dAsymmetricTestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l01884">DepthwiseConvolution2dTestImpl()</a>, <a class="el" href="_types_utils_8cpp_source.xhtml#l00047">Dequantize()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>, <a class="el" href="_ref_l2_normalization_workload_8cpp_source.xhtml#l00028">RefL2NormalizationWorkload::Execute()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00085">armnnUtils::ExpandDims()</a>, <a class="el" href="_ref_fake_quantization_float32_workload_8cpp_source.xhtml#l00017">FakeQuantization()</a>, <a class="el" href="backends_2reference_2workloads_2_gather_8cpp_source.xhtml#l00018">Gather()</a>, <a class="el" href="src_2profiling_2_counter_directory_8hpp_source.xhtml#l00051">CounterDirectory::GetCategoryCount()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00569">MockCounterDirectory::GetCategoryCount()</a>, <a class="el" href="src_2profiling_2_counter_directory_8hpp_source.xhtml#l00054">CounterDirectory::GetCounterCount()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00572">MockCounterDirectory::GetCounterCount()</a>, <a class="el" href="src_2profiling_2_counter_directory_8hpp_source.xhtml#l00053">CounterDirectory::GetCounterSetCount()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00571">MockCounterDirectory::GetCounterSetCount()</a>, <a class="el" href="src_2profiling_2_counter_directory_8hpp_source.xhtml#l00052">CounterDirectory::GetDeviceCount()</a>, <a class="el" href="_profiling_mocks_8hpp_source.xhtml#l00570">MockCounterDirectory::GetDeviceCount()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l00764">Deserializer::GetNetworkOutputBindingInfo()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00138">OutputSlot::GetNumConnections()</a>, <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00149">SubgraphView::GetNumInputSlots()</a>, <a class="el" href="_subgraph_view_8cpp_source.xhtml#l00154">SubgraphView::GetNumOutputSlots()</a>, <a class="el" href="_descriptors_8cpp_source.xhtml#l00358">StridedSliceDescriptor::GetStartForAxis()</a>, <a class="el" href="_descriptors_8cpp_source.xhtml#l00385">StridedSliceDescriptor::GetStopForAxis()</a>, <a class="el" href="_cifar10_database_8cpp_source.xhtml#l00020">Cifar10Database::GetTestCaseData()</a>, <a class="el" href="_mnist_database_8cpp_source.xhtml#l00027">MnistDatabase::GetTestCaseData()</a>, <a class="el" href="_caffe_preprocessor_8cpp_source.xhtml#l00030">CaffePreprocessor::GetTestCaseData()</a>, <a class="el" href="_yolo_database_8cpp_source.xhtml#l00075">YoloDatabase::GetTestCaseData()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00127">armnnUtils::GetUnsignedAxis()</a>, <a class="el" href="_inference_test_image_8cpp_source.xhtml#l00127">InferenceTestImage::InferenceTestImage()</a>, <a class="el" href="_prelu_layer_8cpp_source.xhtml#l00035">PreluLayer::InferOutputShapes()</a>, <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l01198">RefLayerSupport::IsMeanSupported()</a>, <a class="el" href="_caffe_parser_8cpp_source.xhtml#l01632">CaffeParserBase::LoadNetParam()</a>, <a class="el" href="_log_softmax_8cpp_source.xhtml#l00030">LogSoftmax()</a>, <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean()</a>, <a class="el" href="_neon_arg_min_max_workload_8cpp_source.xhtml#l00053">NeonArgMinMaxWorkload::NeonArgMinMaxWorkload()</a>, <a class="el" href="_neon_space_to_batch_nd_workload_8cpp_source.xhtml#l00040">NeonSpaceToBatchNdWorkload::NeonSpaceToBatchNdWorkload()</a>, <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">NonMaxSuppression()</a>, <a class="el" href="_inference_test_8inl_source.xhtml#l00249">ClassifierTestCaseProvider&lt; TDatabase, InferenceModel &gt;::OnInferenceTestFinished()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l01468">armnnTfParser::OutputShapeOfExpandDims()</a>, <a class="el" href="_deserializer_8cpp_source.xhtml#l01938">Deserializer::OutputShapeOfReshape()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.xhtml#l01898">TfLiteParser::OutputShapeOfReshape()</a>, <a class="el" href="_tf_parser_8cpp_source.xhtml#l02463">armnnTfParser::OutputShapeOfSqueeze()</a>, <a class="el" href="_caffe_parser_8cpp_source.xhtml#l00364">CaffeParserBase::ParseInputLayer()</a>, <a class="el" href="_caffe_parser_8cpp_source.xhtml#l01027">CaffeParserBase::ParseLRNLayer()</a>, <a class="el" href="_pooling2d_8cpp_source.xhtml#l00143">Pooling2d()</a>, <a class="el" href="_inference_test_8inl_source.xhtml#l00116">ClassifierTestCase&lt; TTestCaseDatabase, TModel &gt;::ProcessResult()</a>, <a class="el" href="_quantizer_visitor_8cpp_source.xhtml#l00014">QuantizerVisitor::QuantizerVisitor()</a>, <a class="el" href="_resize_8cpp_source.xhtml#l00035">Resize()</a>, <a class="el" href="_inference_model_8hpp_source.xhtml#l00461">InferenceModel&lt; IParser, TDataType &gt;::Run()</a>, <a class="el" href="_serializer_8cpp_source.xhtml#l01582">Serializer::SaveSerializedToStream()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00528">SendCounterPacket::SendCounterDirectoryPacket()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00802">SendCounterPacket::SendPeriodicCounterCapturePacket()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00852">SendCounterPacket::SendPeriodicCounterSelectionPacket()</a>, <a class="el" href="_send_counter_packet_8cpp_source.xhtml#l00029">SendCounterPacket::SendStreamMetaDataPacket()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00367">SimpleConvolution2dNhwcTestImpl()</a>, <a class="el" href="_conv2d_test_impl_8cpp_source.xhtml#l00201">SimpleConvolution2dTestImpl()</a>, <a class="el" href="_inference_test_image_8cpp_source.xhtml#l00183">InferenceTestImage::StbResize()</a>, <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.xhtml#l00090">StridedSlice()</a>, <a class="el" href="_profiling_utils_8hpp_source.xhtml#l00094">armnn::profiling::StringToSwTraceString()</a>, <a class="el" href="_graph_8cpp_source.xhtml#l00404">Graph::SubstituteSubgraph()</a>, <a class="el" href="_workload_data_8cpp_source.xhtml#l02163">MeanQueueDescriptor::Validate()</a>, <a class="el" href="_mean_layer_8cpp_source.xhtml#l00041">MeanLayer::ValidateTensorShapesFromInputs()</a>, <a class="el" href="_profiling_test_utils_8cpp_source.xhtml#l00056">VerifyTimelineLabelBinaryPacketData()</a>, <a class="el" href="_profiling_utils_8cpp_source.xhtml#l00454">armnn::profiling::WriteTimelineLabelBinaryPacket()</a>, and <a class="el" href="_profiling_utils_8cpp_source.xhtml#l00633">armnn::profiling::WriteTimelineMessageDirectoryPackage()</a>.</p>
22753<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#if ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (source &gt; std::numeric_limits&lt;Dest&gt;::max())</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting unsigned type to &quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="stringliteral">&quot;narrower unsigned type. Overflow detected.&quot;</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif // ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Dest<span class="keyword">&gt;</span>(source);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="ttc" id="_numeric_cast_8hpp_xhtml_a242e8e7e20f157c7301f4babcc120750"><div class="ttname"><a href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a></div><div class="ttdeci">#define ARMNN_NUMERIC_CAST_CHECK(cond, msg)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00025">NumericCast.hpp:25</a></div></div>
22754</div><!-- fragment -->
22755</div>
22756</div>
22757<a id="ad6ffcdfab3ded108070933bf4cee52a0"></a>
22758<h2 class="memtitle"><span class="permalink"><a href="#ad6ffcdfab3ded108070933bf4cee52a0">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[2/4]</span></h2>
22759
22760<div class="memitem">
22761<div class="memproto">
22762 <table class="memname">
22763 <tr>
22764 <td class="memname">std::enable_if_t&lt; std::is_signed&lt;Source&gt;::value &amp;&amp; std::is_signed&lt;Dest&gt;::value , Dest&gt; armnn::numeric_cast </td>
22765 <td>(</td>
22766 <td class="paramtype">Source&#160;</td>
22767 <td class="paramname"><em>source</em></td><td>)</td>
22768 <td></td>
22769 </tr>
22770 </table>
22771</div><div class="memdoc">
22772
22773<p class="definition">Definition at line <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00051">51</a> of file <a class="el" href="_numeric_cast_8hpp_source.xhtml">NumericCast.hpp</a>.</p>
22774
22775<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
22776<div class="fragment"><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; static_assert(!std::is_floating_point&lt;Source&gt;::value &amp;&amp; !std::is_floating_point&lt;Dest&gt;::value,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="stringliteral">&quot;numeric_cast doesn&#39;t cast float.&quot;</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#if ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (source &gt; std::numeric_limits&lt;Dest&gt;::max())</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting signed type to narrower signed type. &quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&quot;Overflow detected.&quot;</span>);</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;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (source &lt; std::numeric_limits&lt;Dest&gt;::lowest())</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting signed type to narrower signed type. &quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="stringliteral">&quot;Underflow detected.&quot;</span>);</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;<span class="preprocessor">#endif // ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Dest<span class="keyword">&gt;</span>(source);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;}</div><div class="ttc" id="_numeric_cast_8hpp_xhtml_a242e8e7e20f157c7301f4babcc120750"><div class="ttname"><a href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a></div><div class="ttdeci">#define ARMNN_NUMERIC_CAST_CHECK(cond, msg)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00025">NumericCast.hpp:25</a></div></div>
22777</div><!-- fragment -->
22778</div>
22779</div>
22780<a id="ae3db25ec960ff865f0ed144dc018e61e"></a>
22781<h2 class="memtitle"><span class="permalink"><a href="#ae3db25ec960ff865f0ed144dc018e61e">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[3/4]</span></h2>
22782
22783<div class="memitem">
22784<div class="memproto">
22785 <table class="memname">
22786 <tr>
22787 <td class="memname">std::enable_if_t&lt; std::is_signed&lt;Dest&gt;::value &amp;&amp; std::is_unsigned&lt;Source&gt;::value , Dest&gt; armnn::numeric_cast </td>
22788 <td>(</td>
22789 <td class="paramtype">Source&#160;</td>
22790 <td class="paramname"><em>sValue</em></td><td>)</td>
22791 <td></td>
22792 </tr>
22793 </table>
22794</div><div class="memdoc">
22795
22796<p class="definition">Definition at line <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00079">79</a> of file <a class="el" href="_numeric_cast_8hpp_source.xhtml">NumericCast.hpp</a>.</p>
22797
22798<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
22799<div class="fragment"><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; static_assert(!std::is_floating_point&lt;Dest&gt;::value, <span class="stringliteral">&quot;numeric_cast doesn&#39;t cast to float.&quot;</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="preprocessor">#if ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (sValue &gt; <span class="keyword">static_cast&lt;</span> typename std::make_unsigned&lt;Dest&gt;::type <span class="keyword">&gt;</span>(std::numeric_limits&lt;Dest&gt;::max()))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting unsigned type to signed type. &quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;Overflow detected.&quot;</span>);</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;<span class="preprocessor">#endif // ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Dest<span class="keyword">&gt;</span>(sValue);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="_numeric_cast_8hpp_xhtml_a242e8e7e20f157c7301f4babcc120750"><div class="ttname"><a href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a></div><div class="ttdeci">#define ARMNN_NUMERIC_CAST_CHECK(cond, msg)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00025">NumericCast.hpp:25</a></div></div>
22800</div><!-- fragment -->
22801</div>
22802</div>
22803<a id="a0071d5c83ebd2132118af70b1f3a539a"></a>
22804<h2 class="memtitle"><span class="permalink"><a href="#a0071d5c83ebd2132118af70b1f3a539a">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[4/4]</span></h2>
22805
22806<div class="memitem">
22807<div class="memproto">
22808 <table class="memname">
22809 <tr>
22810 <td class="memname">std::enable_if_t&lt; std::is_unsigned&lt;Dest&gt;::value &amp;&amp; std::is_signed&lt;Source&gt;::value , Dest&gt; armnn::numeric_cast </td>
22811 <td>(</td>
22812 <td class="paramtype">Source&#160;</td>
22813 <td class="paramname"><em>sValue</em></td><td>)</td>
22814 <td></td>
22815 </tr>
22816 </table>
22817</div><div class="memdoc">
22818
22819<p class="definition">Definition at line <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00100">100</a> of file <a class="el" href="_numeric_cast_8hpp_source.xhtml">NumericCast.hpp</a>.</p>
22820
22821<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
22822<div class="fragment"><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; static_assert(!std::is_floating_point&lt;Source&gt;::value &amp;&amp; !std::is_floating_point&lt;Dest&gt;::value,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="stringliteral">&quot;numeric_cast doesn&#39;t cast floats.&quot;</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor">#if ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (sValue &lt; 0)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting negative value to unsigned type. &quot;</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="stringliteral">&quot;Underflow detected.&quot;</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span> typename std::make_unsigned&lt;Source&gt;::type <span class="keyword">&gt;</span>(sValue) &gt; std::numeric_limits&lt;Dest&gt;::max())</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; <a class="code" href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a>(<span class="keyword">false</span>, <span class="stringliteral">&quot;numeric_cast failed casting signed type to unsigned type. &quot;</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="stringliteral">&quot;Overflow detected.&quot;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">#endif // ENABLE_NUMERIC_CAST_CHECKS</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Dest<span class="keyword">&gt;</span>(sValue);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div><div class="ttc" id="_numeric_cast_8hpp_xhtml_a242e8e7e20f157c7301f4babcc120750"><div class="ttname"><a href="_numeric_cast_8hpp.xhtml#a242e8e7e20f157c7301f4babcc120750">ARMNN_NUMERIC_CAST_CHECK</a></div><div class="ttdeci">#define ARMNN_NUMERIC_CAST_CHECK(cond, msg)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00025">NumericCast.hpp:25</a></div></div>
22823</div><!-- fragment -->
22824</div>
22825</div>
22826<a id="ac70a495c61526a0500b33b23db86ca27"></a>
22827<h2 class="memtitle"><span class="permalink"><a href="#ac70a495c61526a0500b33b23db86ca27">&#9670;&nbsp;</a></span>Offset()</h2>
22828
22829<div class="memitem">
22830<div class="memproto">
22831<table class="mlabels">
22832 <tr>
22833 <td class="mlabels-left">
22834 <table class="memname">
22835 <tr>
22836 <td class="memname">unsigned int armnn::Offset </td>
22837 <td>(</td>
22838 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
22839 <td class="paramname"><em>shape</em>, </td>
22840 </tr>
22841 <tr>
22842 <td class="paramkey"></td>
22843 <td></td>
22844 <td class="paramtype">unsigned int&#160;</td>
22845 <td class="paramname"><em>batch</em>, </td>
22846 </tr>
22847 <tr>
22848 <td class="paramkey"></td>
22849 <td></td>
22850 <td class="paramtype">unsigned int&#160;</td>
22851 <td class="paramname"><em>height</em>, </td>
22852 </tr>
22853 <tr>
22854 <td class="paramkey"></td>
22855 <td></td>
22856 <td class="paramtype">unsigned int&#160;</td>
22857 <td class="paramname"><em>width</em>, </td>
22858 </tr>
22859 <tr>
22860 <td class="paramkey"></td>
22861 <td></td>
22862 <td class="paramtype">unsigned int&#160;</td>
22863 <td class="paramname"><em>channels</em>, </td>
22864 </tr>
22865 <tr>
22866 <td class="paramkey"></td>
22867 <td></td>
22868 <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
22869 <td class="paramname"><em>dataLayout</em>&#160;</td>
22870 </tr>
22871 <tr>
22872 <td></td>
22873 <td>)</td>
22874 <td></td><td></td>
22875 </tr>
22876 </table>
22877 </td>
22878 <td class="mlabels-right">
22879<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22880 </tr>
22881</table>
22882</div><div class="memdoc">
22883
22884<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00019">19</a> of file <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml">BatchToSpaceNd.cpp</a>.</p>
22885
22886<p class="reference">References <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00022">DataLayoutIndexed::GetDataLayout()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
22887
22888<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_batch_to_space_n_d_8cpp_source.xhtml#l00035">BatchToSpaceNd()</a>.</p>
22889<div class="fragment"><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="keywordflow">if</span> (dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a7d8b3d755b6ca8f5533657969efb06c4">GetDataLayout</a>() == DataLayout::NHWC)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width) *</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> ((batch * shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()] + channels) *</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()] + height) *</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; shape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()] + width;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
22890<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
22891<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a7d8b3d755b6ca8f5533657969efb06c4"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a7d8b3d755b6ca8f5533657969efb06c4">armnnUtils::DataLayoutIndexed::GetDataLayout</a></div><div class="ttdeci">armnn::DataLayout GetDataLayout() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00022">DataLayoutIndexed.hpp:22</a></div></div>
22892<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
22893</div><!-- fragment -->
22894</div>
22895</div>
22896<a id="a5b0313cb554380d6e4dfb24c31f9e605"></a>
22897<h2 class="memtitle"><span class="permalink"><a href="#a5b0313cb554380d6e4dfb24c31f9e605">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[1/9]</span></h2>
22898
22899<div class="memitem">
22900<div class="memproto">
22901<table class="mlabels">
22902 <tr>
22903 <td class="mlabels-left">
22904 <table class="memname">
22905 <tr>
22906 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22907 <td>(</td>
22908 <td class="paramtype">std::ostream &amp;&#160;</td>
22909 <td class="paramname"><em>os</em>, </td>
22910 </tr>
22911 <tr>
22912 <td class="paramkey"></td>
22913 <td></td>
22914 <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
22915 <td class="paramname"><em>compute</em>&#160;</td>
22916 </tr>
22917 <tr>
22918 <td></td>
22919 <td>)</td>
22920 <td></td><td></td>
22921 </tr>
22922 </table>
22923 </td>
22924 <td class="mlabels-right">
22925<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22926 </tr>
22927</table>
22928</div><div class="memdoc">
22929
22930<p>Deprecated function that will be removed together with the Compute enum. </p>
22931
22932<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00047">47</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
22933
22934<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
22935<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; os &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdoc">The Compute enum is now deprecated and it is now being replaced by BackendId. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00021">BackendId.hpp:21</a></div></div>
22936<div class="ttc" id="namespacearmnn_xhtml_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdoc">Deprecated function that will be removed together with the Compute enum. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00034">BackendId.hpp:34</a></div></div>
22937</div><!-- fragment -->
22938</div>
22939</div>
22940<a id="a127a59fdf5e6d2fa74f87f9265de958b"></a>
22941<h2 class="memtitle"><span class="permalink"><a href="#a127a59fdf5e6d2fa74f87f9265de958b">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[2/9]</span></h2>
22942
22943<div class="memitem">
22944<div class="memproto">
22945<table class="mlabels">
22946 <tr>
22947 <td class="mlabels-left">
22948 <table class="memname">
22949 <tr>
22950 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22951 <td>(</td>
22952 <td class="paramtype">std::ostream &amp;&#160;</td>
22953 <td class="paramname"><em>os</em>, </td>
22954 </tr>
22955 <tr>
22956 <td class="paramkey"></td>
22957 <td></td>
22958 <td class="paramtype">const std::set&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
22959 <td class="paramname"><em>compute</em>&#160;</td>
22960 </tr>
22961 <tr>
22962 <td></td>
22963 <td>)</td>
22964 <td></td><td></td>
22965 </tr>
22966 </table>
22967 </td>
22968 <td class="mlabels-right">
22969<span class="mlabels"><span class="mlabel">inline</span></span> </td>
22970 </tr>
22971</table>
22972</div><div class="memdoc">
22973
22974<p>Deprecated function that will be removed together with the Compute enum. </p>
22975
22976<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00058">58</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
22977
22978<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
22979<div class="fragment"><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; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&amp; comp : compute)</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; os &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(comp) &lt;&lt; <span class="stringliteral">&quot; &quot;</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; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdoc">The Compute enum is now deprecated and it is now being replaced by BackendId. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00021">BackendId.hpp:21</a></div></div>
22980<div class="ttc" id="namespacearmnn_xhtml_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdoc">Deprecated function that will be removed together with the Compute enum. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00034">BackendId.hpp:34</a></div></div>
22981</div><!-- fragment -->
22982</div>
22983</div>
22984<a id="a14de37f4c695ac066f999aa75b7cb136"></a>
22985<h2 class="memtitle"><span class="permalink"><a href="#a14de37f4c695ac066f999aa75b7cb136">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[3/9]</span></h2>
22986
22987<div class="memitem">
22988<div class="memproto">
22989<table class="mlabels">
22990 <tr>
22991 <td class="mlabels-left">
22992 <table class="memname">
22993 <tr>
22994 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
22995 <td>(</td>
22996 <td class="paramtype">std::ostream &amp;&#160;</td>
22997 <td class="paramname"><em>os</em>, </td>
22998 </tr>
22999 <tr>
23000 <td class="paramkey"></td>
23001 <td></td>
23002 <td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_version.xhtml">BackendVersion</a> &amp;&#160;</td>
23003 <td class="paramname"><em>backendVersion</em>&#160;</td>
23004 </tr>
23005 <tr>
23006 <td></td>
23007 <td>)</td>
23008 <td></td><td></td>
23009 </tr>
23010 </table>
23011 </td>
23012 <td class="mlabels-right">
23013<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23014 </tr>
23015</table>
23016</div><div class="memdoc">
23017
23018<p class="definition">Definition at line <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00061">61</a> of file <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml">IBackendInternal.hpp</a>.</p>
23019
23020<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00034">BackendVersion::m_Major</a>, and <a class="el" href="include_2armnn_2backends_2_i_backend_internal_8hpp_source.xhtml#l00035">BackendVersion::m_Minor</a>.</p>
23021<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; backendVersion.m_Major &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; backendVersion.m_Minor &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
23022</div>
23023</div>
23024<a id="a345acf4e0dc087eee3f9688029ee6328"></a>
23025<h2 class="memtitle"><span class="permalink"><a href="#a345acf4e0dc087eee3f9688029ee6328">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[4/9]</span></h2>
23026
23027<div class="memitem">
23028<div class="memproto">
23029<table class="mlabels">
23030 <tr>
23031 <td class="mlabels-left">
23032 <table class="memname">
23033 <tr>
23034 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23035 <td>(</td>
23036 <td class="paramtype">std::ostream &amp;&#160;</td>
23037 <td class="paramname"><em>os</em>, </td>
23038 </tr>
23039 <tr>
23040 <td class="paramkey"></td>
23041 <td></td>
23042 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;&#160;</td>
23043 <td class="paramname"><em>compute</em>&#160;</td>
23044 </tr>
23045 <tr>
23046 <td></td>
23047 <td>)</td>
23048 <td></td><td></td>
23049 </tr>
23050 </table>
23051 </td>
23052 <td class="mlabels-right">
23053<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23054 </tr>
23055</table>
23056</div><div class="memdoc">
23057
23058<p>Deprecated function that will be removed together with the Compute enum. </p>
23059
23060<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00069">69</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
23061
23062<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
23063<div class="fragment"><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; os &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">GetComputeDeviceAsCString</a>(compute);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a6bab17bfd45c2fa4592c431bc25ad10e"><div class="ttname"><a href="namespacearmnn.xhtml#a6bab17bfd45c2fa4592c431bc25ad10e">armnn::GetComputeDeviceAsCString</a></div><div class="ttdeci">constexpr char const * GetComputeDeviceAsCString(Compute compute)</div><div class="ttdoc">Deprecated function that will be removed together with the Compute enum. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00034">BackendId.hpp:34</a></div></div>
23064</div><!-- fragment -->
23065</div>
23066</div>
23067<a id="aa1166f0056ce60553e825ae3cee4d5f7"></a>
23068<h2 class="memtitle"><span class="permalink"><a href="#aa1166f0056ce60553e825ae3cee4d5f7">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[5/9]</span></h2>
23069
23070<div class="memitem">
23071<div class="memproto">
23072<table class="mlabels">
23073 <tr>
23074 <td class="mlabels-left">
23075 <table class="memname">
23076 <tr>
23077 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23078 <td>(</td>
23079 <td class="paramtype">std::ostream &amp;&#160;</td>
23080 <td class="paramname"><em>os</em>, </td>
23081 </tr>
23082 <tr>
23083 <td class="paramkey"></td>
23084 <td></td>
23085 <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> &amp;&#160;</td>
23086 <td class="paramname"><em>b</em>&#160;</td>
23087 </tr>
23088 <tr>
23089 <td></td>
23090 <td>)</td>
23091 <td></td><td></td>
23092 </tr>
23093 </table>
23094 </td>
23095 <td class="mlabels-right">
23096<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23097 </tr>
23098</table>
23099</div><div class="memdoc">
23100
23101<p class="definition">Definition at line <a class="el" href="_b_float16_8hpp_source.xhtml#l00121">121</a> of file <a class="el" href="_b_float16_8hpp_source.xhtml">BFloat16.hpp</a>.</p>
23102
23103<p class="reference">References <a class="el" href="_b_float16_8hpp_source.xhtml#l00087">BFloat16::ToFloat32()</a>, and <a class="el" href="_b_float16_8hpp_source.xhtml#l00094">BFloat16::Val()</a>.</p>
23104<div class="fragment"><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; os &lt;&lt; b.ToFloat32() &lt;&lt; <span class="stringliteral">&quot;(0x&quot;</span> &lt;&lt; std::hex &lt;&lt; b.Val() &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div></div><!-- fragment -->
23105</div>
23106</div>
23107<a id="afc46634e26857d037ee80bb5a74ef28a"></a>
23108<h2 class="memtitle"><span class="permalink"><a href="#afc46634e26857d037ee80bb5a74ef28a">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[6/9]</span></h2>
23109
23110<div class="memitem">
23111<div class="memproto">
23112<table class="mlabels">
23113 <tr>
23114 <td class="mlabels-left">
23115 <table class="memname">
23116 <tr>
23117 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23118 <td>(</td>
23119 <td class="paramtype">std::ostream &amp;&#160;</td>
23120 <td class="paramname"><em>os</em>, </td>
23121 </tr>
23122 <tr>
23123 <td class="paramkey"></td>
23124 <td></td>
23125 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
23126 <td class="paramname"><em>id</em>&#160;</td>
23127 </tr>
23128 <tr>
23129 <td></td>
23130 <td>)</td>
23131 <td></td><td></td>
23132 </tr>
23133 </table>
23134 </td>
23135 <td class="mlabels-right">
23136<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23137 </tr>
23138</table>
23139</div><div class="memdoc">
23140
23141<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00174">174</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
23142<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;{</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; os &lt;&lt; <span class="keywordtype">id</span>.Get();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div></div><!-- fragment -->
23143</div>
23144</div>
23145<a id="a62a9e8c87b9b9f504726746ba4a000a6"></a>
23146<h2 class="memtitle"><span class="permalink"><a href="#a62a9e8c87b9b9f504726746ba4a000a6">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[7/9]</span></h2>
23147
23148<div class="memitem">
23149<div class="memproto">
23150 <table class="memname">
23151 <tr>
23152 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23153 <td>(</td>
23154 <td class="paramtype">std::ostream &amp;&#160;</td>
23155 <td class="paramname"><em>os</em>, </td>
23156 </tr>
23157 <tr>
23158 <td class="paramkey"></td>
23159 <td></td>
23160 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a9eb69ebdaf4ceb8014e7c8a540266100">TContainer</a>&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>, TContainerTemplateArgs... &gt; &amp;&#160;</td>
23161 <td class="paramname"><em>ids</em>&#160;</td>
23162 </tr>
23163 <tr>
23164 <td></td>
23165 <td>)</td>
23166 <td></td><td></td>
23167 </tr>
23168 </table>
23169</div><div class="memdoc">
23170
23171<p class="definition">Definition at line <a class="el" href="_backend_id_8hpp_source.xhtml#l00181">181</a> of file <a class="el" href="_backend_id_8hpp_source.xhtml">BackendId.hpp</a>.</p>
23172<div class="fragment"><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; os &lt;&lt; <span class="charliteral">&#39;[&#39;</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>&amp; <span class="keywordtype">id</span> : ids) { os &lt;&lt; <span class="keywordtype">id</span> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; os &lt;&lt; <span class="charliteral">&#39;]&#39;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div></div><!-- fragment -->
23173</div>
23174</div>
23175<a id="aaa5b68f3f5bb73b1d3c85d895547a372"></a>
23176<h2 class="memtitle"><span class="permalink"><a href="#aaa5b68f3f5bb73b1d3c85d895547a372">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[8/9]</span></h2>
23177
23178<div class="memitem">
23179<div class="memproto">
23180<table class="mlabels">
23181 <tr>
23182 <td class="mlabels-left">
23183 <table class="memname">
23184 <tr>
23185 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23186 <td>(</td>
23187 <td class="paramtype">std::ostream &amp;&#160;</td>
23188 <td class="paramname"><em>os</em>, </td>
23189 </tr>
23190 <tr>
23191 <td class="paramkey"></td>
23192 <td></td>
23193 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
23194 <td class="paramname"><em>stat</em>&#160;</td>
23195 </tr>
23196 <tr>
23197 <td></td>
23198 <td>)</td>
23199 <td></td><td></td>
23200 </tr>
23201 </table>
23202 </td>
23203 <td class="mlabels-right">
23204<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23205 </tr>
23206</table>
23207</div><div class="memdoc">
23208
23209<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00256">256</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
23210
23211<p class="reference">References <a class="el" href="_types_utils_8hpp_source.xhtml#l00017">GetStatusAsCString()</a>.</p>
23212<div class="fragment"><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; os &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a19a90c41ca2f46ab29918fef1a6ad72e">GetStatusAsCString</a>(stat);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a19a90c41ca2f46ab29918fef1a6ad72e"><div class="ttname"><a href="namespacearmnn.xhtml#a19a90c41ca2f46ab29918fef1a6ad72e">armnn::GetStatusAsCString</a></div><div class="ttdeci">constexpr char const * GetStatusAsCString(Status status)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00017">TypesUtils.hpp:17</a></div></div>
23213</div><!-- fragment -->
23214</div>
23215</div>
23216<a id="aa6d7532e14af97577c054f96d0cf23b3"></a>
23217<h2 class="memtitle"><span class="permalink"><a href="#aa6d7532e14af97577c054f96d0cf23b3">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[9/9]</span></h2>
23218
23219<div class="memitem">
23220<div class="memproto">
23221<table class="mlabels">
23222 <tr>
23223 <td class="mlabels-left">
23224 <table class="memname">
23225 <tr>
23226 <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
23227 <td>(</td>
23228 <td class="paramtype">std::ostream &amp;&#160;</td>
23229 <td class="paramname"><em>os</em>, </td>
23230 </tr>
23231 <tr>
23232 <td class="paramkey"></td>
23233 <td></td>
23234 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
23235 <td class="paramname"><em>shape</em>&#160;</td>
23236 </tr>
23237 <tr>
23238 <td></td>
23239 <td>)</td>
23240 <td></td><td></td>
23241 </tr>
23242 </table>
23243 </td>
23244 <td class="mlabels-right">
23245<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23246 </tr>
23247</table>
23248</div><div class="memdoc">
23249
23250<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00263">263</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
23251
23252<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d">Dequantize</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, and <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb">Quantize</a>.</p>
23253<div class="fragment"><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; os &lt;&lt; <span class="stringliteral">&quot;[&quot;</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">for</span> (uint32_t i=0; i&lt;shape.<a class="code" href="classarmnn_1_1_tensor_shape.xhtml#a157e27d41e9f6b21f0d3c025fa47dc24">GetNumDimensions</a>(); ++i)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span> (i!=0)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;,&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; os &lt;&lt; shape[i];</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; os &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> os;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;}</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="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00043">Tensor.hpp:43</a></div></div>
23254</div><!-- fragment -->
23255</div>
23256</div>
23257<a id="a8022a6869bffa6233fec784a471c1680"></a>
23258<h2 class="memtitle"><span class="permalink"><a href="#a8022a6869bffa6233fec784a471c1680">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[1/2]</span></h2>
23259
23260<div class="memitem">
23261<div class="memproto">
23262<table class="mlabels">
23263 <tr>
23264 <td class="mlabels-left">
23265 <table class="memname">
23266 <tr>
23267 <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
23268 <td>(</td>
23269 <td class="paramtype">std::istream &amp;&#160;</td>
23270 <td class="paramname"><em>in</em>, </td>
23271 </tr>
23272 <tr>
23273 <td class="paramkey"></td>
23274 <td></td>
23275 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;&#160;</td>
23276 <td class="paramname"><em>compute</em>&#160;</td>
23277 </tr>
23278 <tr>
23279 <td></td>
23280 <td>)</td>
23281 <td></td><td></td>
23282 </tr>
23283 </table>
23284 </td>
23285 <td class="mlabels-right">
23286<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23287 </tr>
23288</table>
23289</div><div class="memdoc">
23290
23291<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.xhtml#l00020">20</a> of file <a class="el" href="_inference_test_8hpp_source.xhtml">InferenceTest.hpp</a>.</p>
23292
23293<p class="reference">References <a class="el" href="_types_utils_8hpp_source.xhtml#l00148">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
23294<div class="fragment"><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; std::string token;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; compute = <a class="code" href="namespacearmnn.xhtml#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</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; <span class="keywordflow">return</span> in;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.xhtml#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdoc">Deprecated function that will be removed together with the Compute enum. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00148">TypesUtils.hpp:148</a></div></div>
23295<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
23296</div><!-- fragment -->
23297</div>
23298</div>
23299<a id="a3c51506c471a4513dcc3364514d75f39"></a>
23300<h2 class="memtitle"><span class="permalink"><a href="#a3c51506c471a4513dcc3364514d75f39">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[2/2]</span></h2>
23301
23302<div class="memitem">
23303<div class="memproto">
23304<table class="mlabels">
23305 <tr>
23306 <td class="mlabels-left">
23307 <table class="memname">
23308 <tr>
23309 <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
23310 <td>(</td>
23311 <td class="paramtype">std::istream &amp;&#160;</td>
23312 <td class="paramname"><em>in</em>, </td>
23313 </tr>
23314 <tr>
23315 <td class="paramkey"></td>
23316 <td></td>
23317 <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;&#160;</td>
23318 <td class="paramname"><em>backend</em>&#160;</td>
23319 </tr>
23320 <tr>
23321 <td></td>
23322 <td>)</td>
23323 <td></td><td></td>
23324 </tr>
23325 </table>
23326 </td>
23327 <td class="mlabels-right">
23328<span class="mlabels"><span class="mlabel">inline</span></span> </td>
23329 </tr>
23330</table>
23331</div><div class="memdoc">
23332
23333<p class="definition">Definition at line <a class="el" href="_inference_test_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_inference_test_8hpp_source.xhtml">InferenceTest.hpp</a>.</p>
23334
23335<p class="reference">References <a class="el" href="_types_utils_8hpp_source.xhtml#l00148">ParseComputeDevice()</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
23336<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; std::string token;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; in &gt;&gt; token;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> compute = <a class="code" href="namespacearmnn.xhtml#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a>(token.c_str());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (compute == <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>)</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; in.setstate(std::ios_base::failbit);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">throw</span> boost::program_options::validation_error(boost::program_options::validation_error::invalid_option_value);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; backend = compute;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">return</span> in;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456ae"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a></div><div class="ttdeci">Compute</div><div class="ttdoc">The Compute enum is now deprecated and it is now being replaced by BackendId. </div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00021">BackendId.hpp:21</a></div></div>
23337<div class="ttc" id="namespacearmnn_xhtml_a65645fa03bf8cddfb9d8a9f83beeb6e8"><div class="ttname"><a href="namespacearmnn.xhtml#a65645fa03bf8cddfb9d8a9f83beeb6e8">armnn::ParseComputeDevice</a></div><div class="ttdeci">constexpr armnn::Compute ParseComputeDevice(const char *str)</div><div class="ttdoc">Deprecated function that will be removed together with the Compute enum. </div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00148">TypesUtils.hpp:148</a></div></div>
23338<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
23339</div><!-- fragment -->
23340</div>
23341</div>
23342<a id="a82e98ef05fd67036d1195ba17174d685"></a>
23343<h2 class="memtitle"><span class="permalink"><a href="#a82e98ef05fd67036d1195ba17174d685">&#9670;&nbsp;</a></span>Optimize()</h2>
23344
23345<div class="memitem">
23346<div class="memproto">
23347 <table class="memname">
23348 <tr>
23349 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
23350 <td>(</td>
23351 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> &amp;&#160;</td>
23352 <td class="paramname"><em>network</em>, </td>
23353 </tr>
23354 <tr>
23355 <td class="paramkey"></td>
23356 <td></td>
23357 <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
23358 <td class="paramname"><em>backendPreferences</em>, </td>
23359 </tr>
23360 <tr>
23361 <td class="paramkey"></td>
23362 <td></td>
23363 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;&#160;</td>
23364 <td class="paramname"><em>deviceSpec</em>, </td>
23365 </tr>
23366 <tr>
23367 <td class="paramkey"></td>
23368 <td></td>
23369 <td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;&#160;</td>
23370 <td class="paramname"><em>options</em> = <code><a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a>()</code>, </td>
23371 </tr>
23372 <tr>
23373 <td class="paramkey"></td>
23374 <td></td>
23375 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
23376 <td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>()</code>&#160;</td>
23377 </tr>
23378 <tr>
23379 <td></td>
23380 <td>)</td>
23381 <td></td><td></td>
23382 </tr>
23383 </table>
23384</div><div class="memdoc">
23385
23386<p>Create an optimized version of the network. </p>
23387<dl class="params"><dt>Parameters</dt><dd>
23388 <table class="params">
23389 <tr><td class="paramname">network</td><td><a class="el" href="classarmnn_1_1_i_network.xhtml" title="Main network class which provides the interface for building up a neural network. ...">INetwork</a> description of the network to be optimized. </td></tr>
23390 <tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
23391 <tr><td class="paramname">deviceSpec</td><td><a class="el" href="classarmnn_1_1_device_spec.xhtml">DeviceSpec</a> object as queried from the runtime. See <a class="el" href="classarmnn_1_1_i_runtime.xhtml#a6f2ccbdacfac6eb983c519976a5ece54">IRuntime::GetDeviceSpec()</a> </td></tr>
23392 <tr><td class="paramname">messages</td><td>If there are failures or warnings a string describing same will be added to the vector </td></tr>
23393 <tr><td class="paramname">options</td><td><a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> object with optimizer configuration options </td></tr>
23394 </table>
23395 </dd>
23396</dl>
23397<dl class="section return"><dt>Returns</dt><dd>An IOptimizedNetworkPtr interface to the optimized network, throws an exception derived from <a class="el" href="classarmnn_1_1_exception.xhtml" title="Base class for all ArmNN exceptions so that users can filter to just those. ">armnn::Exception</a> if process fails. </dd></dl>
23398
23399<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00890">890</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
23400
23401<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l00428">ApplyBackendOptimizations()</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00033">ARMNN_NO_DEPRECATE_WARN_BEGIN</a>, <a class="el" href="_deprecated_8hpp_source.xhtml#l00034">ARMNN_NO_DEPRECATE_WARN_END</a>, <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistryInstance()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00409">CreateSupportedBackends()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00059">IOptimizedNetwork::Destroy()</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00066">BackendSettings::GetAvailablePreferredBackends()</a>, <a class="el" href="_backend_registry_8cpp_source.xhtml#l00048">BackendRegistry::GetFactory()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00034">Network::GetGraph()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00276">OptimizedNetwork::GetGraph()</a>, <a class="el" href="_i_network_8hpp_source.xhtml#l00598">OptimizerOptions::m_Debug</a>, <a class="el" href="_network_8hpp_source.xhtml#l00288">OptimizationResult::m_Error</a>, <a class="el" href="_i_network_8hpp_source.xhtml#l00595">OptimizerOptions::m_ReduceFp32ToFp16</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00021">BackendSettings::m_SelectedBackends</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00020">BackendSettings::m_SupportedBackends</a>, <a class="el" href="_optimizer_8hpp_source.xhtml#l00043">MakeOptimizations()</a>, <a class="el" href="_optimizer_8cpp_source.xhtml#l00016">Optimizer::Pass()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00075">ReportError()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
23402
23403<p class="reference">Referenced by <a class="el" href="_end_to_end_test_8cpp_source.xhtml#l00017">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="armnn_tf_lite_parser_2test_2_detection_post_process_8cpp_source.xhtml#l00226">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_json_printer_test_impl_8cpp_source.xhtml#l00120">GetSoftmaxProfilerJson()</a>, <a class="el" href="_inference_model_8hpp_source.xhtml#l00371">InferenceModel&lt; IParser, TDataType &gt;::InferenceModel()</a>, <a class="el" href="_model_accuracy_tool-_armnn_8cpp_source.xhtml#l00049">main()</a>, <a class="el" href="_quantized_lstm_end_to_end_test_impl_8cpp_source.xhtml#l00179">QuantizedLstmEndToEnd()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00060">NetworkQuantizer::Refine()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.xhtml#l00121">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::Setup()</a>, <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.xhtml#l00047">ParserFlatbuffersSerializeFixture::Setup()</a>, <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.xhtml#l00061">ParserFlatbuffersFixture::Setup()</a>, <a class="el" href="_parser_prototxt_fixture_8hpp_source.xhtml#l00158">ParserPrototxtFixture&lt; armnnOnnxParser::IOnnxParser &gt;::SetupOptimizedNetwork()</a>, and <a class="el" href="_profiling_test_utils_8cpp_source.xhtml#l00290">VerifyPostOptimisationStructureTestImpl()</a>.</p>
23404<div class="fragment"><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;{</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">if</span> (backendPreferences.empty())</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="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Invoked Optimize with no backends specified&quot;</span>);</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keyword">const</span> Network&amp; network = *boost::polymorphic_downcast&lt;const Network*&gt;(&amp;inNetwork);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; std::unique_ptr&lt;Graph&gt; graph = std::make_unique&lt;Graph&gt;(network.GetGraph());</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">auto</span> optNet = <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">new</span> OptimizedNetwork(std::move(graph)), &amp;IOptimizedNetwork::Destroy);</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; OptimizedNetwork* optNetObjPtr = boost::polymorphic_downcast&lt;OptimizedNetwork*&gt;(optNet.get());</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; <span class="comment">// Get the optimized graph</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; Graph&amp; optGraph = optNetObjPtr-&gt;GetGraph();</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; <span class="comment">// Perform optimisation passes</span></div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keyword">using namespace </span>optimizations;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">SquashEqualPermuteSiblings</a>(),</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">SquashEqualTransposeSiblings</a>(),</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">SquashEqualReshapeSiblings</a>(),</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">OptimizeInversePermutes</a>(),</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">OptimizeInverseTransposes</a>(),</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">MovePermuteUp</a>(),</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">MoveTransposeUp</a>(),</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">PermuteAsReshape</a>(),</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">TransposeAsReshape</a>(),</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">OptimizeConsecutiveReshapes</a>(),</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#add2180a15cdcf5a229de32bb956cb224">FoldPadIntoConvolution2d</a>(),</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">PermuteAndBatchToSpaceAsDepthToSpace</a>(),</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">TransposeAndBatchToSpaceAsDepthToSpace</a>()));</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="comment">// Infer the tensor infos for all output slots. Throws an exception on failure</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; optGraph.InferTensorInfos();</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="comment">// If Fp32 to Fp16 optimization is set convert Fp32 network to Fp16</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>.m_ReduceFp32ToFp16)</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">Fp32NetworkToFp16Converter</a>()));</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</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">// Initialize backend settings</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; BackendSettings backendSettings(backendPreferences, deviceSpec);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">if</span> (backendSettings.GetAvailablePreferredBackends().empty())</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;None of the preferred backends &quot;</span> &lt;&lt; backendPreferences</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; &lt;&lt; <span class="stringliteral">&quot; are supported. Current platform provides &quot;</span> &lt;&lt; backendSettings.m_SupportedBackends;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), messages);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="comment">// Create a map to temporarily hold initialized backend objects</span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; TensorHandleFactoryRegistry tensorHandleFactoryRegistry;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> backends = <a class="code" href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">CreateSupportedBackends</a>(tensorHandleFactoryRegistry, backendSettings);</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">// Assign an available backend to each layer</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; Graph::Iterator firstLayer = optGraph.begin();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; Graph::Iterator lastLayer = optGraph.end();</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; OptimizationResult assignBackendsResult = <a class="code" href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">AssignBackends</a>(optNetObjPtr,</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; backendSettings,</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; firstLayer,</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; lastLayer,</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; messages);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">if</span> (assignBackendsResult.m_Error)</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; {</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// Failed to assign a backend to each layer</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">OptimizeInverseConversionsFp16</a>(),</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <a class="code" href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">OptimizeInverseConversionsFp32</a>()));</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="comment">// Apply the backend-specific optimizations</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; OptimizationResult backendOptimizationResult = <a class="code" href="namespacearmnn.xhtml#ae97734279fd10b4c754cc15bc8ed9dad">ApplyBackendOptimizations</a>(optNetObjPtr,</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; backendSettings,</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; backends,</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; messages);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> (backendOptimizationResult.m_Error)</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="comment">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; }</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="comment">// If the debug flag is set, then insert a DebugLayer after each layer</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="comment">// Doing this after applying the backend optimizations as they might have changed some layers</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>.m_Debug)</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; {</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">InsertDebugLayer</a>()));</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;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="comment">// Calculate the compatibility strategies for tensor handles</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; OptimizationResult strategyResult = <a class="code" href="namespacearmnn.xhtml#a5d3468fb5880eb444cd25b55a86220ff">SelectTensorHandleStrategy</a>(optGraph,</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; backends,</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; tensorHandleFactoryRegistry,</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; messages);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (strategyResult.m_Error)</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">// Failed to apply the backend-specific optimizations</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a>(<span class="keyword">nullptr</span>, &amp;IOptimizedNetwork::Destroy);</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;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="comment">// Based on the tensor handle strategy determined above, insert copy layers where required.</span></div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; optGraph.AddCompatibilityLayers(backends, tensorHandleFactoryRegistry);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="comment">// Convert constants</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">ConvertConstantsFloatToHalf</a>()));</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; Optimizer::Pass(optGraph, <a class="code" href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">MakeOptimizations</a>(<a class="code" href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">ConvertConstantsHalfToFloat</a>()));</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="comment">// Run backend specific optimizations (deprecated)</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; chosenBackend : backendSettings.m_SelectedBackends)</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="keyword">auto</span> factoryFun = <a class="code" href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">BackendRegistryInstance</a>().<a class="code" href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">GetFactory</a>(chosenBackend);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">auto</span> backendPtr = factoryFun();</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; BOOST_ASSERT(backendPtr.get() != <span class="keyword">nullptr</span>);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keyword">auto</span> backendSpecificOptimizations = backendPtr-&gt;GetOptimizations();</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">if</span> (!backendSpecificOptimizations.empty())</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; Optimizer::Pass(optNetObjPtr-&gt;GetGraph(), backendSpecificOptimizations);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; }</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="keywordflow">return</span> optNet;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;}</div><div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a64ddffb38fbe5b78ec92b753cd4bd0ba"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a64ddffb38fbe5b78ec92b753cd4bd0ba">armnn::optimizations::SquashEqualPermuteSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, SquashEqualSiblingsImpl&lt; PermuteLayer &gt; &gt; SquashEqualPermuteSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00066">SquashEqualSiblings.hpp:66</a></div></div>
23405<div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00075">Network.cpp:75</a></div></div>
23406<div class="ttc" id="classarmnn_1_1_backend_registry_xhtml_afc0c63ca8db8957b58826f6d7bd231b2"><div class="ttname"><a href="classarmnn_1_1_backend_registry.xhtml#afc0c63ca8db8957b58826f6d7bd231b2">armnn::BackendRegistry::GetFactory</a></div><div class="ttdeci">FactoryFunction GetFactory(const BackendId &amp;id) const</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00048">BackendRegistry.cpp:48</a></div></div>
23407<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa31127c77d2117f78d43ca2958dcae19"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa31127c77d2117f78d43ca2958dcae19">armnn::optimizations::OptimizeInversePermutes</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl&lt; PermuteLayer &gt; &gt; OptimizeInversePermutes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00042">OptimizeInversePermutes.hpp:42</a></div></div>
23408<div class="ttc" id="namespacearmnn_xhtml_aa7427025a851113a492de0b68b23d22a"><div class="ttname"><a href="namespacearmnn.xhtml#aa7427025a851113a492de0b68b23d22a">armnn::MakeOptimizations</a></div><div class="ttdeci">Optimizer::Optimizations MakeOptimizations(Args &amp;&amp;... args)</div><div class="ttdef"><b>Definition:</b> <a href="_optimizer_8hpp_source.xhtml#l00043">Optimizer.hpp:43</a></div></div>
23409<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a2f9d1a13be2ac1c4213729a0ef181fc0"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a2f9d1a13be2ac1c4213729a0ef181fc0">armnn::optimizations::OptimizeInverseTransposes</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, TransposeLayer, OptimizeInversePermutesImpl&lt; TransposeLayer &gt; &gt; OptimizeInverseTransposes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_permutes_8hpp_source.xhtml#l00044">OptimizeInversePermutes.hpp:44</a></div></div>
23410<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a98f54d4391347d517c7a7869e7707203"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a98f54d4391347d517c7a7869e7707203">armnn::optimizations::TransposeAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; TransposeLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; TransposeLayer &gt; &gt; TransposeAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00105">PermuteAndBatchToSpaceAsDepthToSpace.hpp:105</a></div></div>
23411<div class="ttc" id="_deprecated_8hpp_xhtml_ab66a241a0ed3ee89c866e777b035d0ed"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ab66a241a0ed3ee89c866e777b035d0ed">ARMNN_NO_DEPRECATE_WARN_BEGIN</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_BEGIN</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00033">Deprecated.hpp:33</a></div></div>
23412<div class="ttc" id="namespacearmnn_xhtml_ac2807505b850738bc8a1991ce669dd47"><div class="ttname"><a href="namespacearmnn.xhtml#ac2807505b850738bc8a1991ce669dd47">armnn::BackendRegistryInstance</a></div><div class="ttdeci">BackendRegistry &amp; BackendRegistryInstance()</div><div class="ttdef"><b>Definition:</b> <a href="_backend_registry_8cpp_source.xhtml#l00013">BackendRegistry.cpp:13</a></div></div>
23413<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a29f8d97b2d74f99c88298881cd1d825b"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a29f8d97b2d74f99c88298881cd1d825b">armnn::optimizations::SquashEqualReshapeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, ReshapeLayer, SquashEqualSiblingsImpl&lt; ReshapeLayer &gt; &gt; SquashEqualReshapeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00069">SquashEqualSiblings.hpp:69</a></div></div>
23414<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a5918588fa316cf4c23f1cf02c81ee706"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a5918588fa316cf4c23f1cf02c81ee706">armnn::optimizations::MoveTransposeUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, MoveTransposeUpImpl &gt; MoveTransposeUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_transpose_up_8hpp_source.xhtml#l00080">MoveTransposeUp.hpp:80</a></div></div>
23415<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_add2180a15cdcf5a229de32bb956cb224"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#add2180a15cdcf5a229de32bb956cb224">armnn::optimizations::FoldPadIntoConvolution2d</a></div><div class="ttdeci">OptimizeForConnection&lt; PadLayer, Convolution2dLayer, FoldPadIntoConvolution2dImpl &gt; FoldPadIntoConvolution2d</div><div class="ttdef"><b>Definition:</b> <a href="_fold_pad_into_convolution2d_8hpp_source.xhtml#l00088">FoldPadIntoConvolution2d.hpp:88</a></div></div>
23416<div class="ttc" id="namespacearmnn_xhtml_a5d3468fb5880eb444cd25b55a86220ff"><div class="ttname"><a href="namespacearmnn.xhtml#a5d3468fb5880eb444cd25b55a86220ff">armnn::SelectTensorHandleStrategy</a></div><div class="ttdeci">OptimizationResult SelectTensorHandleStrategy(Graph &amp;optGraph, BackendsMap &amp;backends, TensorHandleFactoryRegistry &amp;registry, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00824">Network.cpp:824</a></div></div>
23417<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aa76c76565125ad77092403176d74fd85"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aa76c76565125ad77092403176d74fd85">armnn::optimizations::InsertDebugLayer</a></div><div class="ttdeci">OptimizeForType&lt; Layer, AddDebugImpl &gt; InsertDebugLayer</div><div class="ttdef"><b>Definition:</b> <a href="_add_debug_8hpp_source.xhtml#l00034">AddDebug.hpp:34</a></div></div>
23418<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a8341ca3512ebafb19d60eba44d40d9e4"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a8341ca3512ebafb19d60eba44d40d9e4">armnn::optimizations::OptimizeConsecutiveReshapes</a></div><div class="ttdeci">OptimizeForConnection&lt; ReshapeLayer, ReshapeLayer, OptimizeConsecutiveReshapesImpl &gt; OptimizeConsecutiveReshapes</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_consecutive_reshapes_8hpp_source.xhtml#l00063">OptimizeConsecutiveReshapes.hpp:63</a></div></div>
23419<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a1a9d718b48612b5817a3c369f9fd71ee"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a1a9d718b48612b5817a3c369f9fd71ee">armnn::optimizations::OptimizeInverseConversionsFp16</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp16ToFp32Layer, ConvertFp32ToFp16Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp16</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00042">OptimizeInverseConversions.hpp:42</a></div></div>
23420<div class="ttc" id="namespacearmnn_xhtml_ae97734279fd10b4c754cc15bc8ed9dad"><div class="ttname"><a href="namespacearmnn.xhtml#ae97734279fd10b4c754cc15bc8ed9dad">armnn::ApplyBackendOptimizations</a></div><div class="ttdeci">OptimizationResult ApplyBackendOptimizations(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, BackendsMap &amp;backends, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00428">Network.cpp:428</a></div></div>
23421<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a17d1279f5f8e3b92c328b1ed3b6fd549"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a17d1279f5f8e3b92c328b1ed3b6fd549">armnn::optimizations::PermuteAndBatchToSpaceAsDepthToSpace</a></div><div class="ttdeci">OptimizeForConnection&lt; PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl&lt; PermuteLayer &gt; &gt; PermuteAndBatchToSpaceAsDepthToSpace</div><div class="ttdef"><b>Definition:</b> <a href="_permute_and_batch_to_space_as_depth_to_space_8hpp_source.xhtml#l00103">PermuteAndBatchToSpaceAsDepthToSpace.hpp:103</a></div></div>
23422<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aafc70d5af99400ff5ea7991825658b2f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aafc70d5af99400ff5ea7991825658b2f">armnn::optimizations::MovePermuteUp</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, PermuteLayer, MovePermuteUpImpl &gt; MovePermuteUp</div><div class="ttdef"><b>Definition:</b> <a href="_move_permute_up_8hpp_source.xhtml#l00080">MovePermuteUp.hpp:80</a></div></div>
23423<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a226cef3d775179e25ee35d231f4e8fae"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a226cef3d775179e25ee35d231f4e8fae">armnn::optimizations::ConvertConstantsFloatToHalf</a></div><div class="ttdeci">ConvertConstants&lt; Float32ToFloat16, IsFloat16Layer &gt; ConvertConstantsFloatToHalf</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00101">ConvertConstants.hpp:101</a></div></div>
23424<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ad1aaeee71293f34d9f65d2dd2792830d"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ad1aaeee71293f34d9f65d2dd2792830d">armnn::optimizations::TransposeAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; TransposeLayer, TransposeAsReshapeImpl &gt; TransposeAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_transpose_as_reshape_8hpp_source.xhtml#l00078">TransposeAsReshape.hpp:78</a></div></div>
23425<div class="ttc" id="_deprecated_8hpp_xhtml_ad762b11b48e5c1d1c1743f529485728a"><div class="ttname"><a href="_deprecated_8hpp.xhtml#ad762b11b48e5c1d1c1743f529485728a">ARMNN_NO_DEPRECATE_WARN_END</a></div><div class="ttdeci">#define ARMNN_NO_DEPRECATE_WARN_END</div><div class="ttdef"><b>Definition:</b> <a href="_deprecated_8hpp_source.xhtml#l00034">Deprecated.hpp:34</a></div></div>
23426<div class="ttc" id="namespacearmnn_xhtml_a674efcf6cbdb9e831d653ff0e821fb38"><div class="ttname"><a href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">armnn::IOptimizedNetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IOptimizedNetwork, void(*)(IOptimizedNetwork *network)&gt; IOptimizedNetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00566">INetwork.hpp:566</a></div></div>
23427<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
23428<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae0b1382e3af141896a46531c50e8863f"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae0b1382e3af141896a46531c50e8863f">armnn::optimizations::PermuteAsReshape</a></div><div class="ttdeci">OptimizeForType&lt; PermuteLayer, PermuteAsReshapeImpl &gt; PermuteAsReshape</div><div class="ttdef"><b>Definition:</b> <a href="_permute_as_reshape_8hpp_source.xhtml#l00067">PermuteAsReshape.hpp:67</a></div></div>
23429<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_aba7b0ca6192b8b58ecd517a82b4f378e"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#aba7b0ca6192b8b58ecd517a82b4f378e">armnn::optimizations::SquashEqualTransposeSiblings</a></div><div class="ttdeci">OptimizeForConnection&lt; Layer, TransposeLayer, SquashEqualSiblingsImpl&lt; TransposeLayer &gt; &gt; SquashEqualTransposeSiblings</div><div class="ttdef"><b>Definition:</b> <a href="_squash_equal_siblings_8hpp_source.xhtml#l00068">SquashEqualSiblings.hpp:68</a></div></div>
23430<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a06cac66872538895dd6b59cdf39173d2"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a06cac66872538895dd6b59cdf39173d2">armnn::optimizations::ConvertConstantsHalfToFloat</a></div><div class="ttdeci">ConvertConstants&lt; Float16ToFloat32, IsFloat32Layer &gt; ConvertConstantsHalfToFloat</div><div class="ttdef"><b>Definition:</b> <a href="_convert_constants_8hpp_source.xhtml#l00100">ConvertConstants.hpp:100</a></div></div>
23431<div class="ttc" id="namespacearmnn_xhtml_a1ec6b4c20ed294a96cf94c33c24caaf5"><div class="ttname"><a href="namespacearmnn.xhtml#a1ec6b4c20ed294a96cf94c33c24caaf5">armnn::CreateSupportedBackends</a></div><div class="ttdeci">BackendsMap CreateSupportedBackends(TensorHandleFactoryRegistry &amp;handleFactoryRegistry, BackendSettings &amp;backendSettings)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00409">Network.cpp:409</a></div></div>
23432<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_ae1509d340bc981b11101c3316ee8afd6"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#ae1509d340bc981b11101c3316ee8afd6">armnn::optimizations::OptimizeInverseConversionsFp32</a></div><div class="ttdeci">OptimizeForConnection&lt; ConvertFp32ToFp16Layer, ConvertFp16ToFp32Layer, OptimizeInverseConversionsImpl &gt; OptimizeInverseConversionsFp32</div><div class="ttdef"><b>Definition:</b> <a href="_optimize_inverse_conversions_8hpp_source.xhtml#l00044">OptimizeInverseConversions.hpp:44</a></div></div>
23433<div class="ttc" id="namespacearmnn_1_1optimizations_xhtml_a86d19da62b6cfed3928f6fe7026f22fa"><div class="ttname"><a href="namespacearmnn_1_1optimizations.xhtml#a86d19da62b6cfed3928f6fe7026f22fa">armnn::optimizations::Fp32NetworkToFp16Converter</a></div><div class="ttdeci">OptimizeForType&lt; Layer, ConvertFp32NetworkToFp16Impl &gt; Fp32NetworkToFp16Converter</div><div class="ttdef"><b>Definition:</b> <a href="_convert_fp32_network_to_fp16_8hpp_source.xhtml#l00078">ConvertFp32NetworkToFp16.hpp:78</a></div></div>
23434<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
23435<div class="ttc" id="namespacearmnn_xhtml_a76dca645d0d0665f74e171bbc1901469"><div class="ttname"><a href="namespacearmnn.xhtml#a76dca645d0d0665f74e171bbc1901469">armnn::AssignBackends</a></div><div class="ttdeci">OptimizationResult AssignBackends(OptimizedNetwork *optNetObjPtr, BackendSettings &amp;backendSettings, SubgraphView &amp;subgraph, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00395">Network.cpp:395</a></div></div>
23436<div class="ttc" id="namespacearmnn_xhtml_a9173495a61a0092b5f38b855f02c3585"><div class="ttname"><a href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">armnn::BackendsMap</a></div><div class="ttdeci">std::map&lt; BackendId, std::unique_ptr&lt; class IBackendInternal &gt; &gt; BackendsMap</div><div class="ttdef"><b>Definition:</b> <a href="_network_8hpp_source.xhtml#l00305">Network.hpp:305</a></div></div>
23437</div><!-- fragment -->
23438</div>
23439</div>
23440<a id="a28e115f5d28500324b53fae9e6c00b77"></a>
23441<h2 class="memtitle"><span class="permalink"><a href="#a28e115f5d28500324b53fae9e6c00b77">&#9670;&nbsp;</a></span>Pad()</h2>
23442
23443<div class="memitem">
23444<div class="memproto">
23445 <table class="memname">
23446 <tr>
23447 <td class="memname">void Pad </td>
23448 <td>(</td>
23449 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23450 <td class="paramname"><em>inputInfo</em>, </td>
23451 </tr>
23452 <tr>
23453 <td class="paramkey"></td>
23454 <td></td>
23455 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23456 <td class="paramname"><em>outputInfo</em>, </td>
23457 </tr>
23458 <tr>
23459 <td class="paramkey"></td>
23460 <td></td>
23461 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23462 <td class="paramname"><em>m_padList</em>, </td>
23463 </tr>
23464 <tr>
23465 <td class="paramkey"></td>
23466 <td></td>
23467 <td class="paramtype">const T *&#160;</td>
23468 <td class="paramname"><em>inputData</em>, </td>
23469 </tr>
23470 <tr>
23471 <td class="paramkey"></td>
23472 <td></td>
23473 <td class="paramtype">T *&#160;</td>
23474 <td class="paramname"><em>outData</em>, </td>
23475 </tr>
23476 <tr>
23477 <td class="paramkey"></td>
23478 <td></td>
23479 <td class="paramtype">const float&#160;</td>
23480 <td class="paramname"><em>padValue</em>&#160;</td>
23481 </tr>
23482 <tr>
23483 <td></td>
23484 <td>)</td>
23485 <td></td><td></td>
23486 </tr>
23487 </table>
23488</div><div class="memdoc">
23489
23490<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml">Pad.cpp</a>.</p>
23491
23492<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.xhtml#a37fe5e5b5f650430dc0e71d69977bebd">Pad&lt; BFloat16 &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a09fc687543b371ddab280203dc989bd9">Pad&lt; float &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a1b165f49b29968defb57e2d9b8628b9f">Pad&lt; Half &gt;()</a>, <a class="el" href="namespacearmnn.xhtml#a68b05cecb5ebbbc3b8d1fd94a66df4af">Pad&lt; int16_t &gt;()</a>, and <a class="el" href="namespacearmnn.xhtml#a7e27cbebab8cde65c84d7a00efa025cd">Pad&lt; uint8_t &gt;()</a>.</p>
23493
23494<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01768">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_ref_pad_workload_8cpp_source.xhtml#l00021">RefPadWorkload&lt; DataType &gt;::Execute()</a>.</p>
23495<div class="fragment"><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = outputInfo.GetNumElements();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; TensorShape outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; TensorShape inputShape = inputInfo.GetShape();</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numInputDimensions = inputShape.GetNumDimensions();</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;<span class="preprocessor"> #ifndef NDEBUG</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputDimensions = outputShape.GetNumDimensions();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; assert(numInputDimensions == numOutputDimensions);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatches = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = 0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; T convertedPadValue = <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(padValue);</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; numOutputElements; ++i)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; outData[i] = convertedPadValue;</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;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">switch</span>(numInputDimensions) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; inputWidth = inputShape[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</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; outData[w+std::get&lt;0&gt;(m_padList[0])] = inputData[w];</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;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">break</span>;</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"> 72</span>&#160; <span class="keywordflow">case</span> 2 :</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; inputHeight = inputShape[0];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputWidth = inputShape[1];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; outputHeight = outputShape[0];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; outputWidth = outputShape[1];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; outData[(h+std::get&lt;0&gt;(m_padList[0]))*outputWidth</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; + (w+std::get&lt;0&gt;(m_padList[1]))] = inputData[h * inputWidth + w];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</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;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</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"> 90</span>&#160; <span class="keywordflow">case</span> 3 :</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; inputChannels = inputShape[0];</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputHeight = inputShape[1];</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; inputWidth = inputShape[2];</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; outputChannels = outputShape[0];</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; outputHeight = outputShape[1];</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; outputWidth = outputShape[2];</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; outData[(c+std::get&lt;0&gt;(m_padList[0]))*outputHeight*outputWidth</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; + (h+std::get&lt;0&gt;(m_padList[1]))*outputWidth</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; + (w+std::get&lt;0&gt;(m_padList[2]))] = inputData[c * inputHeight * inputWidth</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; + h * inputWidth</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; + w];</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</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">break</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; <span class="keywordflow">case</span> 4 :</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; inputBatches = inputShape[0];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; inputChannels = inputShape[1];</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; inputHeight = inputShape[2];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; inputWidth = inputShape[3];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; outputChannels = outputShape[1];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; outputHeight = outputShape[2];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; outputWidth = outputShape[3];</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b = 0; b &lt; inputBatches; b++)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; inputChannels; c++)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> h = 0; h &lt; inputHeight; h++)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> w = 0; w &lt; inputWidth ; w++)</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; outData[(b+std::get&lt;0&gt;(m_padList[0])) * outputChannels * outputHeight * outputWidth</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; + (c+std::get&lt;0&gt;(m_padList[1])) * outputHeight * outputWidth</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; + (h+std::get&lt;0&gt;(m_padList[2])) * outputWidth</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; + (w+std::get&lt;0&gt;(m_padList[3]))] = inputData[b * inputChannels * inputHeight</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; * inputWidth</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; + c * inputHeight * inputWidth</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; + h * inputWidth</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; + w];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</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; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; default :</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div></div><!-- fragment -->
23496</div>
23497</div>
23498<a id="a37fe5e5b5f650430dc0e71d69977bebd"></a>
23499<h2 class="memtitle"><span class="permalink"><a href="#a37fe5e5b5f650430dc0e71d69977bebd">&#9670;&nbsp;</a></span>Pad< BFloat16 >()</h2>
23500
23501<div class="memitem">
23502<div class="memproto">
23503 <table class="memname">
23504 <tr>
23505 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> &gt; </td>
23506 <td>(</td>
23507 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23508 <td class="paramname"><em>inputInfo</em>, </td>
23509 </tr>
23510 <tr>
23511 <td class="paramkey"></td>
23512 <td></td>
23513 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23514 <td class="paramname"><em>outputInfo</em>, </td>
23515 </tr>
23516 <tr>
23517 <td class="paramkey"></td>
23518 <td></td>
23519 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23520 <td class="paramname"><em>m_PadList</em>, </td>
23521 </tr>
23522 <tr>
23523 <td class="paramkey"></td>
23524 <td></td>
23525 <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
23526 <td class="paramname"><em>inputData</em>, </td>
23527 </tr>
23528 <tr>
23529 <td class="paramkey"></td>
23530 <td></td>
23531 <td class="paramtype"><a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
23532 <td class="paramname"><em>outData</em>, </td>
23533 </tr>
23534 <tr>
23535 <td class="paramkey"></td>
23536 <td></td>
23537 <td class="paramtype">const float&#160;</td>
23538 <td class="paramname"><em>padValue</em>&#160;</td>
23539 </tr>
23540 <tr>
23541 <td></td>
23542 <td>)</td>
23543 <td></td><td></td>
23544 </tr>
23545 </table>
23546</div><div class="memdoc">
23547
23548<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
23549
23550</div>
23551</div>
23552<a id="a09fc687543b371ddab280203dc989bd9"></a>
23553<h2 class="memtitle"><span class="permalink"><a href="#a09fc687543b371ddab280203dc989bd9">&#9670;&nbsp;</a></span>Pad< float >()</h2>
23554
23555<div class="memitem">
23556<div class="memproto">
23557 <table class="memname">
23558 <tr>
23559 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; float &gt; </td>
23560 <td>(</td>
23561 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23562 <td class="paramname"><em>inputInfo</em>, </td>
23563 </tr>
23564 <tr>
23565 <td class="paramkey"></td>
23566 <td></td>
23567 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23568 <td class="paramname"><em>outputInfo</em>, </td>
23569 </tr>
23570 <tr>
23571 <td class="paramkey"></td>
23572 <td></td>
23573 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23574 <td class="paramname"><em>m_PadList</em>, </td>
23575 </tr>
23576 <tr>
23577 <td class="paramkey"></td>
23578 <td></td>
23579 <td class="paramtype">const float *&#160;</td>
23580 <td class="paramname"><em>inputData</em>, </td>
23581 </tr>
23582 <tr>
23583 <td class="paramkey"></td>
23584 <td></td>
23585 <td class="paramtype">float *&#160;</td>
23586 <td class="paramname"><em>outData</em>, </td>
23587 </tr>
23588 <tr>
23589 <td class="paramkey"></td>
23590 <td></td>
23591 <td class="paramtype">const float&#160;</td>
23592 <td class="paramname"><em>padValue</em>&#160;</td>
23593 </tr>
23594 <tr>
23595 <td></td>
23596 <td>)</td>
23597 <td></td><td></td>
23598 </tr>
23599 </table>
23600</div><div class="memdoc">
23601
23602<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
23603
23604</div>
23605</div>
23606<a id="a1b165f49b29968defb57e2d9b8628b9f"></a>
23607<h2 class="memtitle"><span class="permalink"><a href="#a1b165f49b29968defb57e2d9b8628b9f">&#9670;&nbsp;</a></span>Pad< Half >()</h2>
23608
23609<div class="memitem">
23610<div class="memproto">
23611 <table class="memname">
23612 <tr>
23613 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> &gt; </td>
23614 <td>(</td>
23615 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23616 <td class="paramname"><em>inputInfo</em>, </td>
23617 </tr>
23618 <tr>
23619 <td class="paramkey"></td>
23620 <td></td>
23621 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23622 <td class="paramname"><em>outputInfo</em>, </td>
23623 </tr>
23624 <tr>
23625 <td class="paramkey"></td>
23626 <td></td>
23627 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23628 <td class="paramname"><em>m_PadList</em>, </td>
23629 </tr>
23630 <tr>
23631 <td class="paramkey"></td>
23632 <td></td>
23633 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
23634 <td class="paramname"><em>inputData</em>, </td>
23635 </tr>
23636 <tr>
23637 <td class="paramkey"></td>
23638 <td></td>
23639 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
23640 <td class="paramname"><em>outData</em>, </td>
23641 </tr>
23642 <tr>
23643 <td class="paramkey"></td>
23644 <td></td>
23645 <td class="paramtype">const float&#160;</td>
23646 <td class="paramname"><em>padValue</em>&#160;</td>
23647 </tr>
23648 <tr>
23649 <td></td>
23650 <td>)</td>
23651 <td></td><td></td>
23652 </tr>
23653 </table>
23654</div><div class="memdoc">
23655
23656<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
23657
23658</div>
23659</div>
23660<a id="a68b05cecb5ebbbc3b8d1fd94a66df4af"></a>
23661<h2 class="memtitle"><span class="permalink"><a href="#a68b05cecb5ebbbc3b8d1fd94a66df4af">&#9670;&nbsp;</a></span>Pad< int16_t >()</h2>
23662
23663<div class="memitem">
23664<div class="memproto">
23665 <table class="memname">
23666 <tr>
23667 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; int16_t &gt; </td>
23668 <td>(</td>
23669 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23670 <td class="paramname"><em>inputInfo</em>, </td>
23671 </tr>
23672 <tr>
23673 <td class="paramkey"></td>
23674 <td></td>
23675 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23676 <td class="paramname"><em>outputInfo</em>, </td>
23677 </tr>
23678 <tr>
23679 <td class="paramkey"></td>
23680 <td></td>
23681 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23682 <td class="paramname"><em>m_PadList</em>, </td>
23683 </tr>
23684 <tr>
23685 <td class="paramkey"></td>
23686 <td></td>
23687 <td class="paramtype">const int16_t *&#160;</td>
23688 <td class="paramname"><em>inputData</em>, </td>
23689 </tr>
23690 <tr>
23691 <td class="paramkey"></td>
23692 <td></td>
23693 <td class="paramtype">int16_t *&#160;</td>
23694 <td class="paramname"><em>outData</em>, </td>
23695 </tr>
23696 <tr>
23697 <td class="paramkey"></td>
23698 <td></td>
23699 <td class="paramtype">const float&#160;</td>
23700 <td class="paramname"><em>padValue</em>&#160;</td>
23701 </tr>
23702 <tr>
23703 <td></td>
23704 <td>)</td>
23705 <td></td><td></td>
23706 </tr>
23707 </table>
23708</div><div class="memdoc">
23709
23710<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
23711
23712</div>
23713</div>
23714<a id="a7e27cbebab8cde65c84d7a00efa025cd"></a>
23715<h2 class="memtitle"><span class="permalink"><a href="#a7e27cbebab8cde65c84d7a00efa025cd">&#9670;&nbsp;</a></span>Pad< uint8_t >()</h2>
23716
23717<div class="memitem">
23718<div class="memproto">
23719 <table class="memname">
23720 <tr>
23721 <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; uint8_t &gt; </td>
23722 <td>(</td>
23723 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23724 <td class="paramname"><em>inputInfo</em>, </td>
23725 </tr>
23726 <tr>
23727 <td class="paramkey"></td>
23728 <td></td>
23729 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
23730 <td class="paramname"><em>outputInfo</em>, </td>
23731 </tr>
23732 <tr>
23733 <td class="paramkey"></td>
23734 <td></td>
23735 <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
23736 <td class="paramname"><em>m_PadList</em>, </td>
23737 </tr>
23738 <tr>
23739 <td class="paramkey"></td>
23740 <td></td>
23741 <td class="paramtype">const uint8_t *&#160;</td>
23742 <td class="paramname"><em>inputData</em>, </td>
23743 </tr>
23744 <tr>
23745 <td class="paramkey"></td>
23746 <td></td>
23747 <td class="paramtype">uint8_t *&#160;</td>
23748 <td class="paramname"><em>outData</em>, </td>
23749 </tr>
23750 <tr>
23751 <td class="paramkey"></td>
23752 <td></td>
23753 <td class="paramtype">const float&#160;</td>
23754 <td class="paramname"><em>padValue</em>&#160;</td>
23755 </tr>
23756 <tr>
23757 <td></td>
23758 <td>)</td>
23759 <td></td><td></td>
23760 </tr>
23761 </table>
23762</div><div class="memdoc">
23763
23764<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
23765
23766</div>
23767</div>
23768<a id="af464d406b22309a891ed0aa3008a7953"></a>
23769<h2 class="memtitle"><span class="permalink"><a href="#af464d406b22309a891ed0aa3008a7953">&#9670;&nbsp;</a></span>ParseBoolean()</h2>
23770
23771<div class="memitem">
23772<div class="memproto">
23773 <table class="memname">
23774 <tr>
23775 <td class="memname">bool armnn::ParseBoolean </td>
23776 <td>(</td>
23777 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
23778 <td class="paramname"><em>value</em>, </td>
23779 </tr>
23780 <tr>
23781 <td class="paramkey"></td>
23782 <td></td>
23783 <td class="paramtype">bool&#160;</td>
23784 <td class="paramname"><em>defaultValue</em>&#160;</td>
23785 </tr>
23786 <tr>
23787 <td></td>
23788 <td>)</td>
23789 <td></td><td></td>
23790 </tr>
23791 </table>
23792</div><div class="memdoc">
23793
23794<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00096">96</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
23795
23796<p class="reference">References <a class="el" href="_backend_options_8hpp_source.xhtml#l00110">BackendOptions::Var::AsBool()</a>, and <a class="el" href="_backend_options_8hpp_source.xhtml#l00104">BackendOptions::Var::IsBool()</a>.</p>
23797<div class="fragment"><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (value.IsBool())</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">return</span> value.AsBool();</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;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div></div><!-- fragment -->
23798</div>
23799</div>
23800<a id="a65645fa03bf8cddfb9d8a9f83beeb6e8"></a>
23801<h2 class="memtitle"><span class="permalink"><a href="#a65645fa03bf8cddfb9d8a9f83beeb6e8">&#9670;&nbsp;</a></span>ParseComputeDevice()</h2>
23802
23803<div class="memitem">
23804<div class="memproto">
23805 <table class="memname">
23806 <tr>
23807 <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> armnn::ParseComputeDevice </td>
23808 <td>(</td>
23809 <td class="paramtype">const char *&#160;</td>
23810 <td class="paramname"><em>str</em></td><td>)</td>
23811 <td></td>
23812 </tr>
23813 </table>
23814</div><div class="memdoc">
23815
23816<p>Deprecated function that will be removed together with the Compute enum. </p>
23817
23818<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00148">148</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
23819
23820<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a>, <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00136">StrEqual()</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
23821
23822<p class="reference">Referenced by <a class="el" href="_inference_test_8hpp_source.xhtml#l00020">operator&gt;&gt;()</a>.</p>
23823<div class="fragment"><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; <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuAcc&quot;</span>))</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;CpuRef&quot;</span>))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacearmnn.xhtml#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a>(str, <span class="stringliteral">&quot;GpuAcc&quot;</span>))</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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">else</span></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; <span class="keywordflow">return</span> <a class="code" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
23824<div class="ttc" id="namespacearmnn_xhtml_a637fea04314a9870c1dc4355c1bed429"><div class="ttname"><a href="namespacearmnn.xhtml#a637fea04314a9870c1dc4355c1bed429">armnn::StrEqual</a></div><div class="ttdeci">constexpr bool StrEqual(const char *strA, const char(&amp;strB)[N])</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00136">TypesUtils.hpp:136</a></div></div>
23825<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
23826<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
23827<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
23828</div><!-- fragment -->
23829</div>
23830</div>
23831<a id="a4e9a59f936f3d2050a17597d22825f53"></a>
23832<h2 class="memtitle"><span class="permalink"><a href="#a4e9a59f936f3d2050a17597d22825f53">&#9670;&nbsp;</a></span>ParseFile()</h2>
23833
23834<div class="memitem">
23835<div class="memproto">
23836 <table class="memname">
23837 <tr>
23838 <td class="memname">std::string armnn::ParseFile </td>
23839 <td>(</td>
23840 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
23841 <td class="paramname"><em>value</em>, </td>
23842 </tr>
23843 <tr>
23844 <td class="paramkey"></td>
23845 <td></td>
23846 <td class="paramtype">std::string&#160;</td>
23847 <td class="paramname"><em>defaultValue</em>&#160;</td>
23848 </tr>
23849 <tr>
23850 <td></td>
23851 <td>)</td>
23852 <td></td><td></td>
23853 </tr>
23854 </table>
23855</div><div class="memdoc">
23856
23857<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00106">106</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
23858
23859<p class="reference">References <a class="el" href="_backend_options_8hpp_source.xhtml#l00113">BackendOptions::Var::AsString()</a>, and <a class="el" href="_backend_options_8hpp_source.xhtml#l00107">BackendOptions::Var::IsString()</a>.</p>
23860
23861<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
23862<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (value.IsString())</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> value.AsString();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div></div><!-- fragment -->
23863</div>
23864</div>
23865<a id="af457790132251cde6545072d879c7684"></a>
23866<h2 class="memtitle"><span class="permalink"><a href="#af457790132251cde6545072d879c7684">&#9670;&nbsp;</a></span>ParseOptions()</h2>
23867
23868<div class="memitem">
23869<div class="memproto">
23870 <table class="memname">
23871 <tr>
23872 <td class="memname">void armnn::ParseOptions </td>
23873 <td>(</td>
23874 <td class="paramtype">const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.xhtml">BackendOptions</a> &gt; &amp;&#160;</td>
23875 <td class="paramname"><em>options</em>, </td>
23876 </tr>
23877 <tr>
23878 <td class="paramkey"></td>
23879 <td></td>
23880 <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&#160;</td>
23881 <td class="paramname"><em>backend</em>, </td>
23882 </tr>
23883 <tr>
23884 <td class="paramkey"></td>
23885 <td></td>
23886 <td class="paramtype">F&#160;</td>
23887 <td class="paramname"><em>f</em>&#160;</td>
23888 </tr>
23889 <tr>
23890 <td></td>
23891 <td>)</td>
23892 <td></td><td></td>
23893 </tr>
23894 </table>
23895</div><div class="memdoc">
23896
23897<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00116">116</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
23898
23899<p class="reference">References <a class="el" href="_backend_options_8hpp_source.xhtml#l00219">BackendOptions::BackendOption::GetName()</a>, and <a class="el" href="_backend_options_8hpp_source.xhtml#l00220">BackendOptions::BackendOption::GetValue()</a>.</p>
23900
23901<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
23902<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> optionsGroup : <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>)</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; <span class="keywordflow">if</span> (optionsGroup.GetBackendId() == backend)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i &lt; optionsGroup.GetOptionCount(); i++)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> BackendOptions::BackendOption option = optionsGroup.GetOption(i);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; f(option.GetName(), option.GetValue());</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
23903</div><!-- fragment -->
23904</div>
23905</div>
23906<a id="a3ca05ac77af0a0444ff34c1319094f6d"></a>
23907<h2 class="memtitle"><span class="permalink"><a href="#a3ca05ac77af0a0444ff34c1319094f6d">&#9670;&nbsp;</a></span>ParseTuningLevel()</h2>
23908
23909<div class="memitem">
23910<div class="memproto">
23911 <table class="memname">
23912 <tr>
23913 <td class="memname"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> armnn::ParseTuningLevel </td>
23914 <td>(</td>
23915 <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
23916 <td class="paramname"><em>value</em>, </td>
23917 </tr>
23918 <tr>
23919 <td class="paramkey"></td>
23920 <td></td>
23921 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
23922 <td class="paramname"><em>defaultValue</em>&#160;</td>
23923 </tr>
23924 <tr>
23925 <td></td>
23926 <td>)</td>
23927 <td></td><td></td>
23928 </tr>
23929 </table>
23930</div><div class="memdoc">
23931
23932<p class="definition">Definition at line <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00078">78</a> of file <a class="el" href="_cl_backend_context_8cpp_source.xhtml">ClBackendContext.cpp</a>.</p>
23933
23934<p class="reference">References <a class="el" href="_logging_8hpp_source.xhtml#l00163">ARMNN_LOG</a>, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>, <a class="el" href="_backend_options_8hpp_source.xhtml#l00105">BackendOptions::Var::IsInt()</a>, <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">None</a>, and <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
23935
23936<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
23937<div class="fragment"><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; <span class="keywordflow">if</span> (value.IsInt())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">int</span> v = value.IsInt();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (v &gt; static_cast&lt;int&gt;(TuningLevel::Exhaustive) ||</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; v &lt; static_cast&lt;int&gt;(TuningLevel::None))</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; <span class="stringliteral">&quot;Invalid GpuAcc tuning level (&quot;</span>&lt;&lt; v &lt;&lt; <span class="stringliteral">&quot;) selected. &quot;</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="stringliteral">&quot;Using default(&quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(defaultValue) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; } <span class="keywordflow">else</span></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"> 90</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a><span class="keyword">&gt;</span>(v);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> defaultValue;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00163">Logging.hpp:163</a></div></div>
23938<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9a"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">armnn::TuningLevel</a></div><div class="ttdeci">TuningLevel</div><div class="ttdef"><b>Definition:</b> <a href="_cl_backend_context_8cpp_source.xhtml#l00069">ClBackendContext.cpp:69</a></div></div>
23939</div><!-- fragment -->
23940</div>
23941</div>
23942<a id="a2a9ac8ebb69307ad4ec894ffa0523dbf"></a>
23943<h2 class="memtitle"><span class="permalink"><a href="#a2a9ac8ebb69307ad4ec894ffa0523dbf">&#9670;&nbsp;</a></span>PermuteTensor()</h2>
23944
23945<div class="memitem">
23946<div class="memproto">
23947 <table class="memname">
23948 <tr>
23949 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> PermuteTensor </td>
23950 <td>(</td>
23951 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
23952 <td class="paramname"><em>tensor</em>, </td>
23953 </tr>
23954 <tr>
23955 <td class="paramkey"></td>
23956 <td></td>
23957 <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;&#160;</td>
23958 <td class="paramname"><em>permutationVector</em>, </td>
23959 </tr>
23960 <tr>
23961 <td class="paramkey"></td>
23962 <td></td>
23963 <td class="paramtype">void *&#160;</td>
23964 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
23965 </tr>
23966 <tr>
23967 <td></td>
23968 <td>)</td>
23969 <td></td><td></td>
23970 </tr>
23971 </table>
23972</div><div class="memdoc">
23973
23974<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
23975
23976<p class="reference">References <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00031">ConstCpuTensorHandle::GetConstTensor()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00115">GetDataTypeSize()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_types_8hpp_source.xhtml#l00202">PermutationVector::GetSize()</a>, <a class="el" href="_cpu_tensor_handle_8hpp_source.xhtml#l00037">ConstCpuTensorHandle::GetTensorInfo()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">Permute</a>, and <a class="el" href="_permute_8cpp_source.xhtml#l00098">armnnUtils::Permuted()</a>.</p>
23977
23978<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.xhtml#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>.</p>
23979<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; BOOST_ASSERT_MSG(tensor, <span class="stringliteral">&quot;Invalid input tensor&quot;</span>);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; BOOST_ASSERT_MSG(permuteBuffer, <span class="stringliteral">&quot;Invalid permute buffer&quot;</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; TensorInfo tensorInfo = tensor-&gt;GetTensorInfo();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">if</span> (permutationVector.GetSize() &gt; 0)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; tensorInfo = <a class="code" href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a>(tensorInfo, permutationVector);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <a class="code" href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a>(tensorInfo.GetShape(), permutationVector,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), permuteBuffer,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="namespacearmnn.xhtml#aa02b9e06fb20fa3c13da0427e6ee5ab2">GetDataTypeSize</a>(tensorInfo.GetDataType()));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ::memcpy(permuteBuffer, tensor-&gt;GetConstTensor&lt;<span class="keywordtype">void</span>&gt;(), tensorInfo.GetNumBytes());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> ConstTensor(tensorInfo, permuteBuffer);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_af3c74017185773dd61d8ca6662d65d43"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af3c74017185773dd61d8ca6662d65d43">armnnUtils::Permute</a></div><div class="ttdeci">void Permute(const armnn::TensorShape &amp;dstShape, const armnn::PermutationVector &amp;mappings, const void *src, void *dst, size_t dataTypeSize)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00121">Permute.cpp:121</a></div></div>
23980<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>
23981<div class="ttc" id="namespacearmnn_xhtml_aa02b9e06fb20fa3c13da0427e6ee5ab2"><div class="ttname"><a href="namespacearmnn.xhtml#aa02b9e06fb20fa3c13da0427e6ee5ab2">armnn::GetDataTypeSize</a></div><div class="ttdeci">constexpr unsigned int GetDataTypeSize(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00115">TypesUtils.hpp:115</a></div></div>
23982</div><!-- fragment -->
23983</div>
23984</div>
23985<a id="a28f9c43e98211c77e579a14fb465bc77"></a>
23986<h2 class="memtitle"><span class="permalink"><a href="#a28f9c43e98211c77e579a14fb465bc77">&#9670;&nbsp;</a></span>polymorphic_downcast()</h2>
23987
23988<div class="memitem">
23989<div class="memproto">
23990 <table class="memname">
23991 <tr>
23992 <td class="memname">DestType armnn::polymorphic_downcast </td>
23993 <td>(</td>
23994 <td class="paramtype">SourceType&#160;</td>
23995 <td class="paramname"><em>value</em></td><td>)</td>
23996 <td></td>
23997 </tr>
23998 </table>
23999</div><div class="memdoc">
24000
24001<p class="definition">Definition at line <a class="el" href="_polymorphic_downcast_8hpp_source.xhtml#l00033">33</a> of file <a class="el" href="_polymorphic_downcast_8hpp_source.xhtml">PolymorphicDowncast.hpp</a>.</p>
24002
24003<p class="reference">References <a class="el" href="_polymorphic_downcast_8hpp_source.xhtml#l00026">ARMNN_POLYMORPHIC_CAST_CHECK</a>.</p>
24004<div class="fragment"><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; static_assert(std::is_pointer&lt;SourceType&gt;::value &amp;&amp;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; std::is_pointer&lt;DestType&gt;::value,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="stringliteral">&quot;polymorphic_downcast only works with pointer types.&quot;</span>);</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; <a class="code" href="_polymorphic_downcast_8hpp.xhtml#a816fdb1ce84860c918a1915b3ea23459">ARMNN_POLYMORPHIC_CAST_CHECK</a>(dynamic_cast&lt;DestType&gt;(value) == static_cast&lt;DestType&gt;(value));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>DestType<span class="keyword">&gt;</span>(value);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div><div class="ttc" id="_polymorphic_downcast_8hpp_xhtml_a816fdb1ce84860c918a1915b3ea23459"><div class="ttname"><a href="_polymorphic_downcast_8hpp.xhtml#a816fdb1ce84860c918a1915b3ea23459">ARMNN_POLYMORPHIC_CAST_CHECK</a></div><div class="ttdeci">#define ARMNN_POLYMORPHIC_CAST_CHECK(cond)</div><div class="ttdef"><b>Definition:</b> <a href="_polymorphic_downcast_8hpp_source.xhtml#l00026">PolymorphicDowncast.hpp:26</a></div></div>
24005</div><!-- fragment -->
24006</div>
24007</div>
24008<a id="ae2e93e304cf516841c521e3eaee025cd"></a>
24009<h2 class="memtitle"><span class="permalink"><a href="#ae2e93e304cf516841c521e3eaee025cd">&#9670;&nbsp;</a></span>Pooling2d()</h2>
24010
24011<div class="memitem">
24012<div class="memproto">
24013 <table class="memname">
24014 <tr>
24015 <td class="memname">void Pooling2d </td>
24016 <td>(</td>
24017 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24018 <td class="paramname"><em>rInputDecoder</em>, </td>
24019 </tr>
24020 <tr>
24021 <td class="paramkey"></td>
24022 <td></td>
24023 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24024 <td class="paramname"><em>rOutputEncoder</em>, </td>
24025 </tr>
24026 <tr>
24027 <td class="paramkey"></td>
24028 <td></td>
24029 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24030 <td class="paramname"><em>inputInfo</em>, </td>
24031 </tr>
24032 <tr>
24033 <td class="paramkey"></td>
24034 <td></td>
24035 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24036 <td class="paramname"><em>outputInfo</em>, </td>
24037 </tr>
24038 <tr>
24039 <td class="paramkey"></td>
24040 <td></td>
24041 <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
24042 <td class="paramname"><em>params</em>&#160;</td>
24043 </tr>
24044 <tr>
24045 <td></td>
24046 <td>)</td>
24047 <td></td><td></td>
24048 </tr>
24049 </table>
24050</div><div class="memdoc">
24051
24052<p>Computes the Pooling2d operation. </p>
24053
24054<p class="definition">Definition at line <a class="el" href="_pooling2d_8cpp_source.xhtml#l00143">143</a> of file <a class="el" href="_pooling2d_8cpp_source.xhtml">Pooling2d.cpp</a>.</p>
24055
24056<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00369">Pooling2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00355">Pooling2dDescriptor::m_PadBottom</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00367">Pooling2dDescriptor::m_PaddingMethod</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00349">Pooling2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00351">Pooling2dDescriptor::m_PadRight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00353">Pooling2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00359">Pooling2dDescriptor::m_PoolHeight</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00347">Pooling2dDescriptor::m_PoolType</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00357">Pooling2dDescriptor::m_PoolWidth</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00361">Pooling2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00363">Pooling2dDescriptor::m_StrideY</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, <a class="el" href="_pooling2d_8cpp_source.xhtml#l00143">Pooling2d()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
24057
24058<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01910">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_pooling2d_8cpp_source.xhtml#l00143">Pooling2d()</a>, and <a class="el" href="_pooling2d_layer_8cpp_source.xhtml#l00022">Pooling2dLayer::Pooling2dLayer()</a>.</p>
24059<div class="fragment"><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> dataLayout(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">auto</span> channelsIndex = dataLayout.GetChannelsIndex();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">auto</span> heightIndex = dataLayout.GetHeightIndex();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">auto</span> widthIndex = dataLayout.GetWidthIndex();</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> batchSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0]);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> channels = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[channelsIndex]);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightOutput = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthOutput = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> heightInput = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[heightIndex]);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> widthInput = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[widthIndex]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padLeft = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#ac18546ebbebbb32fe0a03baa9bf2c600">m_PadLeft</a>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padRight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a002bc30e590d78cbb4f4d12171055ca7">m_PadRight</a>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padTop = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a56b51f56cef50cdfa554258eecdab046">m_PadTop</a>);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> padBottom = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#aa9e49717ebdb741e8c767741647fc618">m_PadBottom</a>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideX = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">m_StrideX</a>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> strideY = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">m_StrideY</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolHeight = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a5699e8606c37d18c03910b242cd1b010">m_PoolHeight</a>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> poolWidth = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a6d8fb685cc1ff224f25aa127fcf62c86">m_PoolWidth</a>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">float</span> defaultInitializer = DefaultInitializer(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Accumulator accumulate = GetAccumulator(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; Executor execute = GetExecutor(params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a0031997bf43bd2747656c31e4977793a">m_PoolType</a>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// Check supported padding methods outside the loop to simplify</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// the inner loop.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::Exclude &amp;&amp;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> != PaddingMethod::IgnoreValue)</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; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unsupported padding type&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n = 0; n &lt; batchSize; n++)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> yOutput = 0; yOutput &lt; heightOutput; yOutput++)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// Calculate values independent of the x axis</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">int</span> hstart = (yOutput * strideY) - padTop;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> hend = hstart + poolHeight;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; hend = std::min(hend, heightInput + padBottom);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">int</span> height = hend - hstart;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">bool</span> hclamped = ClampRange(hstart, hend, heightInput);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> xOutput = 0; xOutput &lt; widthOutput; xOutput++)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> wstart = (xOutput * strideX) - padLeft;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">int</span> wend = wstart + poolWidth;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Clamp the pooling region inside the valid input area (which includes the padding).</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="comment">// This is necessary because the final pooling in a row may overlap beyond the padding.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; wend = std::min(wend, widthInput + padRight);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">float</span> result = defaultInitializer;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordtype">float</span> poolAreaSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(height * (wend - wstart));</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; <span class="comment">// Special case: when the pooling kernel is over a padding region and the padding</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// size is larger or equal to the kernel and the kernel only covers</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="comment">// padding and no real values, then we initialize the result as zero</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// by convention. This is because we need to choose a value here and</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="comment">// all values we have are padding, which we ignore.</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> (OnPaddingOnly(hstart, hend, heightInput) ||</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; OnPaddingOnly(wstart, wend, widthInput))</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; result = 0.0f;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> clamped = hclamped |= ClampRange(wstart, wend, widthInput);</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; <span class="keywordflow">if</span> (clamped &amp;&amp; params.<a class="code" href="structarmnn_1_1_pooling2d_descriptor.xhtml#a8c29d6ea9b4186d69aad5961c910939c">m_PaddingMethod</a> == PaddingMethod::Exclude)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="comment">// When we exclude the padding, it means we calculate with a smaller</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// kernel size, so I changed the divisor here.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; poolAreaSize = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;((hend - hstart) * (wend - wstart));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> yInput = hstart; yInput &lt; hend; yInput++)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> xInput = wstart; xInput &lt; wend; xInput++)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex = dataLayout.GetIndex(inputShape,</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yInput),</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xInput));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; rInputDecoder[inputIndex];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordtype">float</span> inval = rInputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; accumulate(result, inval);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</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; execute(result, poolAreaSize);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex = dataLayout.GetIndex(outputShape,</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(n),</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(c),</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(yOutput),</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; boost::numeric_cast&lt;unsigned int&gt;(xOutput));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; rOutputEncoder[outputIndex];</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; rOutputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(result);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div><div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_aa9e49717ebdb741e8c767741647fc618"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#aa9e49717ebdb741e8c767741647fc618">armnn::Pooling2dDescriptor::m_PadBottom</a></div><div class="ttdeci">uint32_t m_PadBottom</div><div class="ttdoc">Padding bottom value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00355">Descriptors.hpp:355</a></div></div>
24060<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#l00088">Tensor.hpp:88</a></div></div>
24061<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_ac18546ebbebbb32fe0a03baa9bf2c600"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#ac18546ebbebbb32fe0a03baa9bf2c600">armnn::Pooling2dDescriptor::m_PadLeft</a></div><div class="ttdeci">uint32_t m_PadLeft</div><div class="ttdoc">Padding left value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00349">Descriptors.hpp:349</a></div></div>
24062<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a6d8fb685cc1ff224f25aa127fcf62c86"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a6d8fb685cc1ff224f25aa127fcf62c86">armnn::Pooling2dDescriptor::m_PoolWidth</a></div><div class="ttdeci">uint32_t m_PoolWidth</div><div class="ttdoc">Pooling width value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00357">Descriptors.hpp:357</a></div></div>
24063<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24064<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a8c29d6ea9b4186d69aad5961c910939c"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a8c29d6ea9b4186d69aad5961c910939c">armnn::Pooling2dDescriptor::m_PaddingMethod</a></div><div class="ttdeci">PaddingMethod m_PaddingMethod</div><div class="ttdoc">The padding method to be used. (Exclude, IgnoreValue). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00367">Descriptors.hpp:367</a></div></div>
24065<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a56b51f56cef50cdfa554258eecdab046"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a56b51f56cef50cdfa554258eecdab046">armnn::Pooling2dDescriptor::m_PadTop</a></div><div class="ttdeci">uint32_t m_PadTop</div><div class="ttdoc">Padding top value in the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00353">Descriptors.hpp:353</a></div></div>
24066<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>
24067<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_afe6a3377c4531315354def9023c8fdda"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#afe6a3377c4531315354def9023c8fdda">armnn::Pooling2dDescriptor::m_StrideX</a></div><div class="ttdeci">uint32_t m_StrideX</div><div class="ttdoc">Stride value when proceeding through input for the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00361">Descriptors.hpp:361</a></div></div>
24068<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24069<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a5699e8606c37d18c03910b242cd1b010"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a5699e8606c37d18c03910b242cd1b010">armnn::Pooling2dDescriptor::m_PoolHeight</a></div><div class="ttdeci">uint32_t m_PoolHeight</div><div class="ttdoc">Pooling height value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00359">Descriptors.hpp:359</a></div></div>
24070<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a002bc30e590d78cbb4f4d12171055ca7"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a002bc30e590d78cbb4f4d12171055ca7">armnn::Pooling2dDescriptor::m_PadRight</a></div><div class="ttdeci">uint32_t m_PadRight</div><div class="ttdoc">Padding right value in the width dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00351">Descriptors.hpp:351</a></div></div>
24071<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
24072<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
24073<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
24074<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::Pooling2dDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00369">Descriptors.hpp:369</a></div></div>
24075<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_a0031997bf43bd2747656c31e4977793a"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#a0031997bf43bd2747656c31e4977793a">armnn::Pooling2dDescriptor::m_PoolType</a></div><div class="ttdeci">PoolingAlgorithm m_PoolType</div><div class="ttdoc">The pooling algorithm to use (Max. Average, L2). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00347">Descriptors.hpp:347</a></div></div>
24076<div class="ttc" id="structarmnn_1_1_pooling2d_descriptor_xhtml_ac1fe174bbadfb39a2b636940c2e647c8"><div class="ttname"><a href="structarmnn_1_1_pooling2d_descriptor.xhtml#ac1fe174bbadfb39a2b636940c2e647c8">armnn::Pooling2dDescriptor::m_StrideY</a></div><div class="ttdeci">uint32_t m_StrideY</div><div class="ttdoc">Stride value when proceeding through input for the height dimension. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00363">Descriptors.hpp:363</a></div></div>
24077</div><!-- fragment -->
24078</div>
24079</div>
24080<a id="aa1ca65b3ba7f7c760eb3d5563c12864e"></a>
24081<h2 class="memtitle"><span class="permalink"><a href="#aa1ca65b3ba7f7c760eb3d5563c12864e">&#9670;&nbsp;</a></span>PreluImpl()</h2>
24082
24083<div class="memitem">
24084<div class="memproto">
24085 <table class="memname">
24086 <tr>
24087 <td class="memname">void PreluImpl </td>
24088 <td>(</td>
24089 <td class="paramtype">const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.xhtml">PreluQueueDescriptor</a> &amp;&#160;</td>
24090 <td class="paramname"><em>data</em>, </td>
24091 </tr>
24092 <tr>
24093 <td class="paramkey"></td>
24094 <td></td>
24095 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24096 <td class="paramname"><em>inputData</em>, </td>
24097 </tr>
24098 <tr>
24099 <td class="paramkey"></td>
24100 <td></td>
24101 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24102 <td class="paramname"><em>alphaData</em>, </td>
24103 </tr>
24104 <tr>
24105 <td class="paramkey"></td>
24106 <td></td>
24107 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24108 <td class="paramname"><em>outputData</em>&#160;</td>
24109 </tr>
24110 <tr>
24111 <td></td>
24112 <td>)</td>
24113 <td></td><td></td>
24114 </tr>
24115 </table>
24116</div><div class="memdoc">
24117
24118<p class="definition">Definition at line <a class="el" href="_prelu_impl_8cpp_source.xhtml#l00013">13</a> of file <a class="el" href="_prelu_impl_8cpp_source.xhtml">PreluImpl.cpp</a>.</p>
24119
24120<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, and <a class="el" href="_broadcast_8hpp_source.xhtml#l00026">BroadcastLoop::Unroll()</a>.</p>
24121
24122<p class="reference">Referenced by <a class="el" href="_ref_prelu_workload_8cpp_source.xhtml#l00021">RefPreluWorkload::Execute()</a>.</p>
24123<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">const</span> TensorInfo&amp; alphaInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[1]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</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="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> TensorShape&amp; alphaShape = alphaInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape = outputInfo.GetShape();</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="comment">// PReLU activation: f(x) = alpha * x for x &lt; 0, f(x) = x for x &gt;= 0</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">auto</span> prelu = [](<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> alpha)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> x &lt; 0 ? alpha * x : x;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; };</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; BroadcastLoop(inputShape, alphaShape, outputShape).Unroll(prelu, 0, inputData, alphaData, outputData);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
24124</div><!-- fragment -->
24125</div>
24126</div>
24127<a id="abe34cf42d7c8515ecd15d11f4aeb399c"></a>
24128<h2 class="memtitle"><span class="permalink"><a href="#abe34cf42d7c8515ecd15d11f4aeb399c">&#9670;&nbsp;</a></span>PreserveTypeTestImpl()</h2>
24129
24130<div class="memitem">
24131<div class="memproto">
24132 <table class="memname">
24133 <tr>
24134 <td class="memname">void armnn::PreserveTypeTestImpl </td>
24135 <td>(</td>
24136 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
24137 <td class="paramname"><em>dataType</em></td><td>)</td>
24138 <td></td>
24139 </tr>
24140 </table>
24141</div><div class="memdoc">
24142
24143<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">2926</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
24144
24145<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
24146
24147<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02956">BOOST_AUTO_TEST_CASE()</a>.</p>
24148<div class="fragment"><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160;{</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;</div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; IConnectableLayer* input1 = network-&gt;AddInputLayer(1);</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160; IConnectableLayer* addition = network-&gt;AddAdditionLayer();</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(2);</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160;</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160; input0-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(0));</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; input1-&gt;GetOutputSlot(0).Connect(addition-&gt;GetInputSlot(1));</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; addition-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; <span class="keyword">const</span> TensorShape shape{1U, 2U, 3U};</div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; <span class="keyword">const</span> TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, dataType);</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; input1-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; addition-&gt;GetOutputSlot(0).SetTensorInfo(info);</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"> 2946</span>&#160; QuantizerOptions <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a> = dataType == DataType::Float32 ?</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; QuantizerOptions(DataType::QAsymmU8, <span class="keyword">true</span>) : QuantizerOptions(dataType, <a class="code" href="_cl_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a>);</div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160;</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get(), <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>)-&gt;ExportNetwork();</div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160; TestPreserveType validatorQAsymmU8(options, dataType, shape, shape);</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; validatorQAsymmU8.CheckQuantizeDequantizeLayerVisited(</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160; dataType == DataType::Float32 || dataType == DataType::Float16);</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160;}</div><div class="ttc" id="_cl_layer_tests_8cpp_xhtml_a37f1c3ccc9fc906be85185350dd83d48"><div class="ttname"><a href="_cl_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></div><div class="ttdeci">DataLayout::NCHW DataLayout::NCHW DataLayout::NHWC DataLayout::NHWC true</div><div class="ttdef"><b>Definition:</b> <a href="_cl_layer_tests_8cpp_source.xhtml#l00202">ClLayerTests.cpp:202</a></div></div>
24149<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
24150<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
24151<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
24152<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
24153</div><!-- fragment -->
24154</div>
24155</div>
24156<a id="abbbe4a59b72fba606f21e7c24dcbd8c0"></a>
24157<h2 class="memtitle"><span class="permalink"><a href="#abbbe4a59b72fba606f21e7c24dcbd8c0">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[1/2]</span></h2>
24158
24159<div class="memitem">
24160<div class="memproto">
24161<table class="mlabels">
24162 <tr>
24163 <td class="mlabels-left">
24164 <table class="memname">
24165 <tr>
24166 <td class="memname">void armnn::Quantize </td>
24167 <td>(</td>
24168 <td class="paramtype">uint8_t *&#160;</td>
24169 <td class="paramname"><em>quant</em>, </td>
24170 </tr>
24171 <tr>
24172 <td class="paramkey"></td>
24173 <td></td>
24174 <td class="paramtype">const float *&#160;</td>
24175 <td class="paramname"><em>dequant</em>, </td>
24176 </tr>
24177 <tr>
24178 <td class="paramkey"></td>
24179 <td></td>
24180 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24181 <td class="paramname"><em>info</em>&#160;</td>
24182 </tr>
24183 <tr>
24184 <td></td>
24185 <td>)</td>
24186 <td></td><td></td>
24187 </tr>
24188 </table>
24189 </td>
24190 <td class="mlabels-right">
24191<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24192 </tr>
24193</table>
24194</div><div class="memdoc">
24195
24196<p class="definition">Definition at line <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00095">95</a> of file <a class="el" href="_ref_workload_utils_8hpp_source.xhtml">RefWorkloadUtils.hpp</a>.</p>
24197
24198<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00264">TensorInfo::GetQuantizationOffset()</a>, and <a class="el" href="_tensor_8cpp_source.xhtml#l00247">TensorInfo::GetQuantizationScale()</a>.</p>
24199<div class="fragment"><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetNumElements(); i++)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; quant[i] = armnn::Quantize&lt;uint8_t&gt;(dequant[i], <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationScale(), <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.GetQuantizationOffset());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
24200</div><!-- fragment -->
24201</div>
24202</div>
24203<a id="ad773a034fb9983e15f3094b4c5c7c30c"></a>
24204<h2 class="memtitle"><span class="permalink"><a href="#ad773a034fb9983e15f3094b4c5c7c30c">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[2/2]</span></h2>
24205
24206<div class="memitem">
24207<div class="memproto">
24208 <table class="memname">
24209 <tr>
24210 <td class="memname">template int32_t Quantize&lt; int32_t &gt; </td>
24211 <td>(</td>
24212 <td class="paramtype">float&#160;</td>
24213 <td class="paramname"><em>value</em>, </td>
24214 </tr>
24215 <tr>
24216 <td class="paramkey"></td>
24217 <td></td>
24218 <td class="paramtype">float&#160;</td>
24219 <td class="paramname"><em>scale</em>, </td>
24220 </tr>
24221 <tr>
24222 <td class="paramkey"></td>
24223 <td></td>
24224 <td class="paramtype">int32_t&#160;</td>
24225 <td class="paramname"><em>offset</em>&#160;</td>
24226 </tr>
24227 <tr>
24228 <td></td>
24229 <td>)</td>
24230 <td></td><td></td>
24231 </tr>
24232 </table>
24233</div><div class="memdoc">
24234
24235<p>Quantize a floating point data type into an 8-bit data type. </p>
24236<p>Explicit specialization of Quantize for int32_t.</p>
24237<p>Explicit specialization of Quantize for int16_t.</p>
24238<p>Explicit specialization of Quantize for uint8_t.</p>
24239<p>Explicit specialization of Quantize for int8_t.</p>
24240<dl class="params"><dt>Parameters</dt><dd>
24241 <table class="params">
24242 <tr><td class="paramname">value</td><td>- The value to quantize. </td></tr>
24243 <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
24244 <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
24245 </table>
24246 </dd>
24247</dl>
24248<dl class="section return"><dt>Returns</dt><dd>- The quantized value calculated as round(value/scale)+offset. </dd></dl>
24249
24250<p class="definition">Definition at line <a class="el" href="_types_utils_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_types_utils_8cpp_source.xhtml">TypesUtils.cpp</a>.</p>
24251
24252<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01950">BOOST_AUTO_TEST_CASE()</a>.</p>
24253<div class="fragment"><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; static_assert(IsQuantizedType&lt;QuantizedType&gt;(), <span class="stringliteral">&quot;Not an integer type.&quot;</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; constexpr QuantizedType max = std::numeric_limits&lt;QuantizedType&gt;::max();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; constexpr QuantizedType min = std::numeric_limits&lt;QuantizedType&gt;::lowest();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; BOOST_ASSERT(scale != 0.f);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; BOOST_ASSERT(!std::isnan(value));</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; <span class="keywordtype">float</span> clampedValue = std::min(std::max(static_cast&lt;float&gt;(round(value/scale) + offset), static_cast&lt;float&gt;(min)),</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; static_cast&lt;float&gt;(max));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">auto</span> quantizedBits = <span class="keyword">static_cast&lt;</span>QuantizedType<span class="keyword">&gt;</span>(clampedValue);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> quantizedBits;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div></div><!-- fragment -->
24254</div>
24255</div>
24256<a id="a0e2bce68a1f7eff47ead4d9a2804eb91"></a>
24257<h2 class="memtitle"><span class="permalink"><a href="#a0e2bce68a1f7eff47ead4d9a2804eb91">&#9670;&nbsp;</a></span>QuantizeConstant()</h2>
24258
24259<div class="memitem">
24260<div class="memproto">
24261 <table class="memname">
24262 <tr>
24263 <td class="memname">void armnn::QuantizeConstant </td>
24264 <td>(</td>
24265 <td class="paramtype">const srcType *&#160;</td>
24266 <td class="paramname"><em>src</em>, </td>
24267 </tr>
24268 <tr>
24269 <td class="paramkey"></td>
24270 <td></td>
24271 <td class="paramtype">uint8_t *&#160;</td>
24272 <td class="paramname"><em>dst</em>, </td>
24273 </tr>
24274 <tr>
24275 <td class="paramkey"></td>
24276 <td></td>
24277 <td class="paramtype">size_t&#160;</td>
24278 <td class="paramname"><em>numElements</em>, </td>
24279 </tr>
24280 <tr>
24281 <td class="paramkey"></td>
24282 <td></td>
24283 <td class="paramtype">float &amp;&#160;</td>
24284 <td class="paramname"><em>scale</em>, </td>
24285 </tr>
24286 <tr>
24287 <td class="paramkey"></td>
24288 <td></td>
24289 <td class="paramtype">int &amp;&#160;</td>
24290 <td class="paramname"><em>offset</em>&#160;</td>
24291 </tr>
24292 <tr>
24293 <td></td>
24294 <td>)</td>
24295 <td></td><td></td>
24296 </tr>
24297 </table>
24298</div><div class="memdoc">
24299
24300<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00023">23</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml">NetworkQuantizerUtils.hpp</a>.</p>
24301
24302<p class="reference">References <a class="el" href="_network_quantization_scheme_8hpp_source.xhtml#l00031">QAsymmU8QuantizationScheme::ComputeScheme()</a>, and <a class="el" href="_network_quantizer_utils_8cpp_source.xhtml#l00015">CreateQuantizedConst()</a>.</p>
24303
24304<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8cpp_source.xhtml#l00015">CreateQuantizedConst()</a>.</p>
24305<div class="fragment"><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(src);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; BOOST_ASSERT(dst);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">float</span> min = std::numeric_limits&lt;srcType&gt;::max();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">float</span> max = std::numeric_limits&lt;srcType&gt;::lowest();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; min = std::min(min, src[i]);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; max = std::max(max, src[i]);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; QAsymmU8QuantizationScheme quantizationScheme;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> qParams = quantizationScheme.ComputeScheme(min, max);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; scale = qParams.first;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; offset = qParams.second;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; numElements; ++i)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; dst[i] = armnn::Quantize&lt;uint8_t&gt;(src[i], scale, offset);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9b8e5a95f8c061bbbcdb036915dcb61a"><div class="ttname"><a href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">armnn::OffsetScalePair</a></div><div class="ttdeci">std::pair&lt; float, int &gt; OffsetScalePair</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantization_scheme_8hpp_source.xhtml#l00016">NetworkQuantizationScheme.hpp:16</a></div></div>
24306</div><!-- fragment -->
24307</div>
24308</div>
24309<a id="ae86f1ca23eaa764da9e589cc8e39a969"></a>
24310<h2 class="memtitle"><span class="permalink"><a href="#ae86f1ca23eaa764da9e589cc8e39a969">&#9670;&nbsp;</a></span>ReducedOutputOffset()</h2>
24311
24312<div class="memitem">
24313<div class="memproto">
24314 <table class="memname">
24315 <tr>
24316 <td class="memname">unsigned int armnn::ReducedOutputOffset </td>
24317 <td>(</td>
24318 <td class="paramtype">const unsigned int&#160;</td>
24319 <td class="paramname"><em>numDims</em>, </td>
24320 </tr>
24321 <tr>
24322 <td class="paramkey"></td>
24323 <td></td>
24324 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
24325 <td class="paramname"><em>dims</em>, </td>
24326 </tr>
24327 <tr>
24328 <td class="paramkey"></td>
24329 <td></td>
24330 <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24331 <td class="paramname"><em>index</em>, </td>
24332 </tr>
24333 <tr>
24334 <td class="paramkey"></td>
24335 <td></td>
24336 <td class="paramtype">const unsigned int&#160;</td>
24337 <td class="paramname"><em>numAxis</em>, </td>
24338 </tr>
24339 <tr>
24340 <td class="paramkey"></td>
24341 <td></td>
24342 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24343 <td class="paramname"><em>axis</em>&#160;</td>
24344 </tr>
24345 <tr>
24346 <td></td>
24347 <td>)</td>
24348 <td></td><td></td>
24349 </tr>
24350 </table>
24351</div><div class="memdoc">
24352
24353<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml">Mean.cpp</a>.</p>
24354
24355<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean()</a>.</p>
24356<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset = 0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx = 0; idx &lt; numDims; ++idx)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">bool</span> isAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (!axis.empty())</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisIdx = 0; axisIdx &lt; numAxis; ++axisIdx)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (idx == axis[axisIdx])</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; isAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">break</span>;</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; }</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; <span class="keywordflow">if</span> (!isAxis)</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; offset = offset * dims[idx] + index[idx];</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; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> offset;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div></div><!-- fragment -->
24357</div>
24358</div>
24359<a id="ae7d50846b2769f81521af24d063bc093"></a>
24360<h2 class="memtitle"><span class="permalink"><a href="#ae7d50846b2769f81521af24d063bc093">&#9670;&nbsp;</a></span>RefBackendId()</h2>
24361
24362<div class="memitem">
24363<div class="memproto">
24364 <table class="memname">
24365 <tr>
24366 <td class="memname">constexpr const char* armnn::RefBackendId </td>
24367 <td>(</td>
24368 <td class="paramname"></td><td>)</td>
24369 <td></td>
24370 </tr>
24371 </table>
24372</div><div class="memdoc">
24373
24374<p class="definition">Definition at line <a class="el" href="_ref_backend_id_8hpp_source.xhtml#l00010">10</a> of file <a class="el" href="_ref_backend_id_8hpp_source.xhtml">RefBackendId.hpp</a>.</p>
24375
24376<p class="reference">Referenced by <a class="el" href="_ref_backend_8cpp_source.xhtml#l00024">RefBackend::GetIdStatic()</a>.</p>
24377<div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;CpuRef&quot;</span>; }</div></div><!-- fragment -->
24378</div>
24379</div>
24380<a id="a5baedac4819656984488bc1fe5fe1505"></a>
24381<h2 class="memtitle"><span class="permalink"><a href="#a5baedac4819656984488bc1fe5fe1505">&#9670;&nbsp;</a></span>RefTensorHandleFactoryId()</h2>
24382
24383<div class="memitem">
24384<div class="memproto">
24385 <table class="memname">
24386 <tr>
24387 <td class="memname">constexpr const char* armnn::RefTensorHandleFactoryId </td>
24388 <td>(</td>
24389 <td class="paramname"></td><td>)</td>
24390 <td></td>
24391 </tr>
24392 </table>
24393</div><div class="memdoc">
24394
24395<p class="definition">Definition at line <a class="el" href="_ref_tensor_handle_factory_8hpp_source.xhtml#l00015">15</a> of file <a class="el" href="_ref_tensor_handle_factory_8hpp_source.xhtml">RefTensorHandleFactory.hpp</a>.</p>
24396
24397<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_factory_8cpp_source.xhtml#l00016">RefTensorHandleFactory::GetIdStatic()</a>.</p>
24398<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;Arm/Ref/TensorHandleFactory&quot;</span>; }</div></div><!-- fragment -->
24399</div>
24400</div>
24401<a id="a52b301fd3adce20b51c4482cb52f1a38"></a>
24402<h2 class="memtitle"><span class="permalink"><a href="#a52b301fd3adce20b51c4482cb52f1a38">&#9670;&nbsp;</a></span>ReorderWeightChannelsForAcl()</h2>
24403
24404<div class="memitem">
24405<div class="memproto">
24406 <table class="memname">
24407 <tr>
24408 <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> armnn::ReorderWeightChannelsForAcl </td>
24409 <td>(</td>
24410 <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;&#160;</td>
24411 <td class="paramname"><em>weightHandle</em>, </td>
24412 </tr>
24413 <tr>
24414 <td class="paramkey"></td>
24415 <td></td>
24416 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
24417 <td class="paramname"><em>dataLayout</em>, </td>
24418 </tr>
24419 <tr>
24420 <td class="paramkey"></td>
24421 <td></td>
24422 <td class="paramtype">void *&#160;</td>
24423 <td class="paramname"><em>permuteBuffer</em>&#160;</td>
24424 </tr>
24425 <tr>
24426 <td></td>
24427 <td>)</td>
24428 <td></td><td></td>
24429 </tr>
24430 </table>
24431</div><div class="memdoc">
24432
24433<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00062">62</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
24434
24435<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00167">BaseTensor&lt; MemoryType &gt;::GetInfo()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00213">TensorInfo::GetNumBytes()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00169">BaseTensor&lt; MemoryType &gt;::GetShape()</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
24436<div class="fragment"><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="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* weight = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>*<span class="keyword">&gt;</span>(permuteBuffer);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightHandle.GetShape();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> multiplier;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> height;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> width;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</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"> 72</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC: <span class="comment">//It actually is [ H, W, I, M ]</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; height = weightShape[0];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; width = weightShape[1];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; inputChannels = weightShape[2];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; multiplier = weightShape[3];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW: <span class="comment">//It actually is [ M, I, H, W ]</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; height = weightShape[2];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; width = weightShape[3];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; inputChannels = weightShape[1];</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; multiplier = weightShape[0];</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</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; std::vector&lt;DataType&gt; weightAclOrder(height*width*inputChannels*multiplier);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> destinationWeightsChannel;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalChannels = inputChannels * multiplier;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelSize = height * width;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannel = 0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> originWeightsChannel = 0; originWeightsChannel &lt; totalChannels; originWeightsChannel++)</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; inputChannel = originWeightsChannel % inputChannels;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; destinationWeightsChannel = (originWeightsChannel - inputChannel) / inputChannels + multiplier * inputChannel;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; channelSize; i++)</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; weightAclOrder[i + destinationWeightsChannel * channelSize] =</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; weight[i + originWeightsChannel * channelSize];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ::memcpy(permuteBuffer, weightAclOrder.data(), weightHandle.GetInfo().GetNumBytes());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> ConstTensor(weightHandle.GetInfo(), permuteBuffer);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
24437</div><!-- fragment -->
24438</div>
24439</div>
24440<a id="a7658f93d899c8646515a29370e6aa994"></a>
24441<h2 class="memtitle"><span class="permalink"><a href="#a7658f93d899c8646515a29370e6aa994">&#9670;&nbsp;</a></span>ReportError()</h2>
24442
24443<div class="memitem">
24444<div class="memproto">
24445 <table class="memname">
24446 <tr>
24447 <td class="memname">void armnn::ReportError </td>
24448 <td>(</td>
24449 <td class="paramtype">const std::string &amp;&#160;</td>
24450 <td class="paramname"><em>errorMessage</em>, </td>
24451 </tr>
24452 <tr>
24453 <td class="paramkey"></td>
24454 <td></td>
24455 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
24456 <td class="paramname"><em>errorMessages</em>&#160;</td>
24457 </tr>
24458 <tr>
24459 <td></td>
24460 <td>)</td>
24461 <td></td><td></td>
24462 </tr>
24463 </table>
24464</div><div class="memdoc">
24465
24466<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00075">75</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
24467
24468<p class="reference">References <a class="el" href="_logging_8hpp_source.xhtml#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
24469
24470<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00114">CheckScaleSetOnQuantizedType()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00099">ReturnWithError()</a>.</p>
24471<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; std::stringstream fullErrorMessage;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; fullErrorMessage &lt;&lt; <span class="stringliteral">&quot;ERROR: &quot;</span> &lt;&lt; errorMessage;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullErrorMessage.str();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (errorMessages)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; errorMessages.value().push_back(fullErrorMessage.str());</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;}</div><div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00163">Logging.hpp:163</a></div></div>
24472</div><!-- fragment -->
24473</div>
24474</div>
24475<a id="a38e626422579decc13e3ee37da1a84c9"></a>
24476<h2 class="memtitle"><span class="permalink"><a href="#a38e626422579decc13e3ee37da1a84c9">&#9670;&nbsp;</a></span>ReportWarning()</h2>
24477
24478<div class="memitem">
24479<div class="memproto">
24480 <table class="memname">
24481 <tr>
24482 <td class="memname">void armnn::ReportWarning </td>
24483 <td>(</td>
24484 <td class="paramtype">const std::string &amp;&#160;</td>
24485 <td class="paramname"><em>warningMessage</em>, </td>
24486 </tr>
24487 <tr>
24488 <td class="paramkey"></td>
24489 <td></td>
24490 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
24491 <td class="paramname"><em>warningMessages</em>&#160;</td>
24492 </tr>
24493 <tr>
24494 <td></td>
24495 <td>)</td>
24496 <td></td><td></td>
24497 </tr>
24498 </table>
24499</div><div class="memdoc">
24500
24501<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00087">87</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
24502
24503<p class="reference">References <a class="el" href="_logging_8hpp_source.xhtml#l00163">ARMNN_LOG</a>, and <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>.</p>
24504
24505<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00428">ApplyBackendOptimizations()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>.</p>
24506<div class="fragment"><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;{</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; std::stringstream fullWarningMessage;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; fullWarningMessage &lt;&lt; <span class="stringliteral">&quot;WARNING: &quot;</span> &lt;&lt; warningMessage;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a>(warning) &lt;&lt; fullWarningMessage.str();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (warningMessages)</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; warningMessages.value().push_back(fullWarningMessage.str());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;}</div><div class="ttc" id="_logging_8hpp_xhtml_a7b6ad073975f437ec38ca7d20154727f"><div class="ttname"><a href="_logging_8hpp.xhtml#a7b6ad073975f437ec38ca7d20154727f">ARMNN_LOG</a></div><div class="ttdeci">#define ARMNN_LOG(severity)</div><div class="ttdef"><b>Definition:</b> <a href="_logging_8hpp_source.xhtml#l00163">Logging.hpp:163</a></div></div>
24507</div><!-- fragment -->
24508</div>
24509</div>
24510<a id="a5ee4a1cca55f69b31e625c786655ed1a"></a>
24511<h2 class="memtitle"><span class="permalink"><a href="#a5ee4a1cca55f69b31e625c786655ed1a">&#9670;&nbsp;</a></span>RequiresCopy()</h2>
24512
24513<div class="memitem">
24514<div class="memproto">
24515 <table class="memname">
24516 <tr>
24517 <td class="memname">bool armnn::RequiresCopy </td>
24518 <td>(</td>
24519 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
24520 <td class="paramname"><em>src</em>, </td>
24521 </tr>
24522 <tr>
24523 <td class="paramkey"></td>
24524 <td></td>
24525 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
24526 <td class="paramname"><em>dst</em>, </td>
24527 </tr>
24528 <tr>
24529 <td class="paramkey"></td>
24530 <td></td>
24531 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
24532 <td class="paramname"><em>registry</em>&#160;</td>
24533 </tr>
24534 <tr>
24535 <td></td>
24536 <td>)</td>
24537 <td></td><td></td>
24538 </tr>
24539 </table>
24540</div><div class="memdoc">
24541
24542<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00526">526</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
24543
24544<p class="reference">References <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00060">ITensorHandleFactory::GetExportFlags()</a>, <a class="el" href="_tensor_handle_factory_registry_8cpp_source.xhtml#l00039">TensorHandleFactoryRegistry::GetFactory()</a>, and <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00061">ITensorHandleFactory::GetImportFlags()</a>.</p>
24545
24546<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00638">CalculateSlotOption()</a>.</p>
24547<div class="fragment"><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (src != dst)</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; ITensorHandleFactory* srcFactory = registry.GetFactory(src);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; ITensorHandleFactory* dstFactory = registry.GetFactory(dst);</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="keywordflow">if</span> (srcFactory &amp;&amp; dstFactory &amp;&amp;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; (srcFactory-&gt;GetExportFlags() &amp; dstFactory-&gt;GetImportFlags()) != 0)</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="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div></div><!-- fragment -->
24548</div>
24549</div>
24550<a id="a3170fdd696155a247ecd81d445c0e2e1"></a>
24551<h2 class="memtitle"><span class="permalink"><a href="#a3170fdd696155a247ecd81d445c0e2e1">&#9670;&nbsp;</a></span>ReshapeWeightsForAcl()</h2>
24552
24553<div class="memitem">
24554<div class="memproto">
24555 <table class="memname">
24556 <tr>
24557 <td class="memname">void ReshapeWeightsForAcl </td>
24558 <td>(</td>
24559 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24560 <td class="paramname"><em>weightInfo</em>, </td>
24561 </tr>
24562 <tr>
24563 <td class="paramkey"></td>
24564 <td></td>
24565 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
24566 <td class="paramname"><em>dataLayout</em>&#160;</td>
24567 </tr>
24568 <tr>
24569 <td></td>
24570 <td>)</td>
24571 <td></td><td></td>
24572 </tr>
24573 </table>
24574</div><div class="memdoc">
24575
24576<p class="definition">Definition at line <a class="el" href="_workload_utils_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_workload_utils_8cpp_source.xhtml">WorkloadUtils.cpp</a>.</p>
24577
24578<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00090">TensorInfo::SetShape()</a>.</p>
24579
24580<p class="reference">Referenced by <a class="el" href="_workload_utils_8cpp_source.xhtml#l00132">ConvertWeightTensorFromArmnnToAcl()</a>, <a class="el" href="_workload_utils_8cpp_source.xhtml#l00109">ConvertWeightTensorInfoFromArmnnToAcl()</a>, and <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>.</p>
24581<div class="fragment"><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Reshape the weights in-place</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">const</span> TensorShape&amp; weightShape = weightInfo.GetShape();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">switch</span> (dataLayout)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">case</span> DataLayout::NHWC:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// The data layout is NHWC, reshape from [ H, W, I, M ] to [ 1, H, W, I * M ]</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; weightShape[0],</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; weightShape[1],</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; weightShape[2] * weightShape[3] });</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; weightInfo.SetShape({ 1,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; weightShape[0] * weightShape[1],</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; weightShape[2],</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; weightShape[3] });</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> DataLayout::NCHW:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// The data layout is NCHW, reshape from [ M, I, H, W ] to [ 1, I * M, H, W, ]</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; weightInfo.SetShape({ 1, weightShape[0] * weightShape[1], weightShape[2], weightShape[3] });</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div></div><!-- fragment -->
24582</div>
24583</div>
24584<a id="a25dc224be48103343302b5a6fd588fe7"></a>
24585<h2 class="memtitle"><span class="permalink"><a href="#a25dc224be48103343302b5a6fd588fe7">&#9670;&nbsp;</a></span>Resize()</h2>
24586
24587<div class="memitem">
24588<div class="memproto">
24589 <table class="memname">
24590 <tr>
24591 <td class="memname">void Resize </td>
24592 <td>(</td>
24593 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
24594 <td class="paramname"><em>in</em>, </td>
24595 </tr>
24596 <tr>
24597 <td class="paramkey"></td>
24598 <td></td>
24599 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24600 <td class="paramname"><em>inputInfo</em>, </td>
24601 </tr>
24602 <tr>
24603 <td class="paramkey"></td>
24604 <td></td>
24605 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
24606 <td class="paramname"><em>out</em>, </td>
24607 </tr>
24608 <tr>
24609 <td class="paramkey"></td>
24610 <td></td>
24611 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
24612 <td class="paramname"><em>outputInfo</em>, </td>
24613 </tr>
24614 <tr>
24615 <td class="paramkey"></td>
24616 <td></td>
24617 <td class="paramtype"><a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a>&#160;</td>
24618 <td class="paramname"><em>dataLayout</em>, </td>
24619 </tr>
24620 <tr>
24621 <td class="paramkey"></td>
24622 <td></td>
24623 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a>&#160;</td>
24624 <td class="paramname"><em>resizeMethod</em>, </td>
24625 </tr>
24626 <tr>
24627 <td class="paramkey"></td>
24628 <td></td>
24629 <td class="paramtype">bool&#160;</td>
24630 <td class="paramname"><em>alignCorners</em>&#160;</td>
24631 </tr>
24632 <tr>
24633 <td></td>
24634 <td>)</td>
24635 <td></td><td></td>
24636 </tr>
24637 </table>
24638</div><div class="memdoc">
24639
24640<p class="definition">Definition at line <a class="el" href="_resize_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_resize_8cpp_source.xhtml">Resize.cpp</a>.</p>
24641
24642<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>, <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>, <a class="el" href="_resize_8cpp_source.xhtml#l00035">Resize()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
24643
24644<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02003">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_inference_test_image_8hpp_source.xhtml#l00079">InferenceTestImage::GetSizeInBytes()</a>, <a class="el" href="_resize_8cpp_source.xhtml#l00035">Resize()</a>, and <a class="el" href="_resize_layer_8cpp_source.xhtml#l00021">ResizeLayer::ResizeLayer()</a>.</p>
24645<div class="fragment"><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// We follow the definition of TensorFlow and AndroidNN: the top-left corner of a texel in the output</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="comment">// image is projected into the input image to figure out the interpolants and weights. Note that this</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// will yield different results than if projecting the centre of output texels.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batchSize = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelCount = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sizeOffset = resizeMethod == <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a> &amp;&amp; alignCorners ? 1 : 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">// How much to scale pixel coordinates in the output image, to get the corresponding pixel coordinates</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// in the input image.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleY = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(inputHeight - sizeOffset)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; / boost::numeric_cast&lt;float&gt;(outputHeight - sizeOffset);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> scaleX = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(inputWidth - sizeOffset)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; / boost::numeric_cast&lt;float&gt;(outputWidth - sizeOffset);</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="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n = 0; n &lt; batchSize; ++n)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channelCount; ++c)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y = 0; y &lt; outputHeight; ++y)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Corresponding real-valued height coordinate in input image.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> iy = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(y) * scaleY;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// Discrete height coordinate of top-left texel (in the 2x2 texel area used for interpolation).</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fiy = floorf(iy);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y0 = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fiy);</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; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> yw = iy - fiy;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</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> x = 0; x &lt; outputWidth; ++x)</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; <span class="comment">// Real-valued and discrete width coordinates in input image.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ix = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">float</span>&gt;(x) * scaleX;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> fix = floorf(ix);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x0 = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&gt;(fix);</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"> 90</span>&#160; <span class="comment">// Interpolation weight (range [0,1]).</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> xw = ix - fix;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Discrete width/height coordinates of texels below and to the right of (x0, y0).</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x1 = std::min(x0 + 1, inputWidth - 1u);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> y1 = std::min(y0 + 1, inputHeight - 1u);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">float</span> interpolatedValue;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">switch</span> (resizeMethod)</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">case</span> <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a>:</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; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x0)];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">float</span> input1 = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y0, x1)];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">float</span> input2 = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x0)];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">float</span> input3 = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, y1, x1)];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">float</span> input4 = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ly0 = Lerp(input1, input2, xw); <span class="comment">// lerp along row y0.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span> ly1 = Lerp(input3, input4, xw); <span class="comment">// lerp along row y1.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; interpolatedValue = Lerp(ly0, ly1, yw);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">break</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; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// calculate euclidean distance to the 4 neighbours</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">auto</span> distance00 = EuclideanDistance(fix, fiy, x0, y0);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">auto</span> distance01 = EuclideanDistance(fix, fiy, x0, y1);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">auto</span> distance10 = EuclideanDistance(fix, fiy, x1, y0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">auto</span> distance11 = EuclideanDistance(fix, fiy, x1, y1);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">auto</span> <a class="code" href="structarmnn_1_1minimum.xhtml">minimum</a> = std::min( { distance00, distance01, distance10, distance11 } );</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xNearest = 0;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yNearest = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.xhtml">minimum</a> == distance00)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; xNearest = x0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; yNearest = y0;</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="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.xhtml">minimum</a> == distance01)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; xNearest = x0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; yNearest = y1;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.xhtml">minimum</a> == distance10)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; xNearest = x1;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; yNearest = y0;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1minimum.xhtml">minimum</a> == distance11)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; xNearest = x1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; yNearest = y1;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Resize Nearest Neighbor failure&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; in[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(inputShape, n, c, yNearest, xNearest)];</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; interpolatedValue = in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a>(<span class="stringliteral">&quot;Unknown resize method: &quot;</span> +</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::to_string(static_cast&lt;int&gt;(resizeMethod)));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; out[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">GetIndex</a>(outputShape, n, c, y, x)];</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(interpolatedValue);</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; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
24646<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#l00088">Tensor.hpp:88</a></div></div>
24647<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
24648<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>
24649<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
24650<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
24651<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a1e25d8623da985a43597b5756c73b206"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a1e25d8623da985a43597b5756c73b206">armnnUtils::DataLayoutIndexed::GetIndex</a></div><div class="ttdeci">unsigned int GetIndex(const armnn::TensorShape &amp;shape, unsigned int batchIndex, unsigned int channelIndex, unsigned int heightIndex, unsigned int widthIndex) const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed.hpp:27</a></div></div>
24652<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
24653<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
24654<div class="ttc" id="structarmnn_1_1minimum_xhtml"><div class="ttname"><a href="structarmnn_1_1minimum.xhtml">armnn::minimum</a></div><div class="ttdef"><b>Definition:</b> <a href="_minimum_8hpp_source.xhtml#l00012">Minimum.hpp:12</a></div></div>
24655<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
24656<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
24657<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
24658</div><!-- fragment -->
24659</div>
24660</div>
24661<a id="ae50fff9aa2a1ce46392d8641c10aa3bc"></a>
24662<h2 class="memtitle"><span class="permalink"><a href="#ae50fff9aa2a1ce46392d8641c10aa3bc">&#9670;&nbsp;</a></span>ReturnWithError()</h2>
24663
24664<div class="memitem">
24665<div class="memproto">
24666 <table class="memname">
24667 <tr>
24668 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::ReturnWithError </td>
24669 <td>(</td>
24670 <td class="paramtype"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td>
24671 <td class="paramname"><em>res</em>, </td>
24672 </tr>
24673 <tr>
24674 <td class="paramkey"></td>
24675 <td></td>
24676 <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
24677 <td class="paramname"><em>layer</em>, </td>
24678 </tr>
24679 <tr>
24680 <td class="paramkey"></td>
24681 <td></td>
24682 <td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
24683 <td class="paramname"><em>backendSettings</em>, </td>
24684 </tr>
24685 <tr>
24686 <td class="paramkey"></td>
24687 <td></td>
24688 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
24689 <td class="paramname"><em>errMessages</em>&#160;</td>
24690 </tr>
24691 <tr>
24692 <td></td>
24693 <td>)</td>
24694 <td></td><td></td>
24695 </tr>
24696 </table>
24697</div><div class="memdoc">
24698
24699<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00099">99</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
24700
24701<p class="reference">References <a class="el" href="_internal_types_8cpp_source.xhtml#l00013">GetLayerTypeAsCString()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="_network_8hpp_source.xhtml#l00288">OptimizationResult::m_Error</a>, <a class="el" href="_backend_settings_8hpp_source.xhtml#l00019">BackendSettings::m_PreferredBackends</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00075">ReportError()</a>.</p>
24702
24703<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00149">AttemptBackendAssignment()</a>.</p>
24704<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;{</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; std::stringstream failureMsg;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; failureMsg &lt;&lt; <span class="stringliteral">&quot;Layer of type &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">GetLayerTypeAsCString</a>(layer-&gt;GetType())</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; &lt;&lt; <span class="stringliteral">&quot; is not supported on any preferred backend &quot;</span> &lt;&lt; backendSettings.m_PreferredBackends;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">ReportError</a>(failureMsg.str(), errMessages);</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; res.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a7658f93d899c8646515a29370e6aa994"><div class="ttname"><a href="namespacearmnn.xhtml#a7658f93d899c8646515a29370e6aa994">armnn::ReportError</a></div><div class="ttdeci">void ReportError(const std::string &amp;errorMessage, Optional&lt; std::vector&lt; std::string &gt; &amp;&gt; errorMessages)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00075">Network.cpp:75</a></div></div>
24705<div class="ttc" id="namespacearmnn_xhtml_a9da573d7a1fc03726fd41f2130cbcf92"><div class="ttname"><a href="namespacearmnn.xhtml#a9da573d7a1fc03726fd41f2130cbcf92">armnn::GetLayerTypeAsCString</a></div><div class="ttdeci">char const * GetLayerTypeAsCString(LayerType type)</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8cpp_source.xhtml#l00013">InternalTypes.cpp:13</a></div></div>
24706</div><!-- fragment -->
24707</div>
24708</div>
24709<a id="aff5bee79757341daf750c7dd7c123a15"></a>
24710<h2 class="memtitle"><span class="permalink"><a href="#aff5bee79757341daf750c7dd7c123a15">&#9670;&nbsp;</a></span>RunClFunction()</h2>
24711
24712<div class="memitem">
24713<div class="memproto">
24714<table class="mlabels">
24715 <tr>
24716 <td class="mlabels-left">
24717 <table class="memname">
24718 <tr>
24719 <td class="memname">void armnn::RunClFunction </td>
24720 <td>(</td>
24721 <td class="paramtype">arm_compute::IFunction &amp;&#160;</td>
24722 <td class="paramname"><em>function</em>, </td>
24723 </tr>
24724 <tr>
24725 <td class="paramkey"></td>
24726 <td></td>
24727 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;&#160;</td>
24728 <td class="paramname"><em>location</em>&#160;</td>
24729 </tr>
24730 <tr>
24731 <td></td>
24732 <td>)</td>
24733 <td></td><td></td>
24734 </tr>
24735 </table>
24736 </td>
24737 <td class="mlabels-right">
24738<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24739 </tr>
24740</table>
24741</div><div class="memdoc">
24742
24743<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00131">131</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
24744
24745<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00123">WrapClError()</a>.</p>
24746
24747<p class="reference">Referenced by <a class="el" href="_cl_pad_workload_8cpp_source.xhtml#l00039">ClPadWorkload::Execute()</a>, <a class="el" href="_cl_addition_workload_8cpp_source.xhtml#l00032">ClAdditionWorkload::Execute()</a>, <a class="el" href="_cl_subtraction_workload_8cpp_source.xhtml#l00032">ClSubtractionWorkload::Execute()</a>, <a class="el" href="_cl_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00029">ClConvertFp32ToFp16Workload::Execute()</a>, <a class="el" href="_cl_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00029">ClConvertFp16ToFp32Workload::Execute()</a>, <a class="el" href="_cl_activation_workload_8cpp_source.xhtml#l00046">ClActivationWorkload::Execute()</a>, <a class="el" href="_cl_lstm_float_workload_8cpp_source.xhtml#l00250">ClLstmFloatWorkload::Execute()</a>, <a class="el" href="_cl_prelu_workload_8cpp_source.xhtml#l00042">ClPreluWorkload::Execute()</a>, <a class="el" href="_cl_abs_workload_8cpp_source.xhtml#l00038">ClAbsWorkload::Execute()</a>, <a class="el" href="_cl_quantize_workload_8cpp_source.xhtml#l00043">ClQuantizeWorkload::Execute()</a>, <a class="el" href="_cl_rsqrt_workload_8cpp_source.xhtml#l00038">ClRsqrtWorkload::Execute()</a>, <a class="el" href="_cl_instance_normalization_workload_8cpp_source.xhtml#l00053">ClInstanceNormalizationWorkload::Execute()</a>, <a class="el" href="_cl_softmax_float_workload_8cpp_source.xhtml#l00030">ClSoftmaxFloatWorkload::Execute()</a>, <a class="el" href="_cl_space_to_depth_workload_8cpp_source.xhtml#l00038">ClSpaceToDepthWorkload::Execute()</a>, <a class="el" href="_cl_maximum_workload_8cpp_source.xhtml#l00052">ClMaximumWorkload::Execute()</a>, <a class="el" href="_cl_minimum_workload_8cpp_source.xhtml#l00052">ClMinimumWorkload::Execute()</a>, <a class="el" href="_cl_normalization_float_workload_8cpp_source.xhtml#l00049">ClNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_batch_to_space_nd_workload_8cpp_source.xhtml#l00039">ClBatchToSpaceNdWorkload::Execute()</a>, <a class="el" href="_cl_floor_float_workload_8cpp_source.xhtml#l00034">ClFloorFloatWorkload::Execute()</a>, <a class="el" href="_cl_reshape_workload_8cpp_source.xhtml#l00035">ClReshapeWorkload::Execute()</a>, <a class="el" href="_cl_resize_workload_8cpp_source.xhtml#l00071">ClResizeWorkload::Execute()</a>, <a class="el" href="_cl_slice_workload_8cpp_source.xhtml#l00050">ClSliceWorkload::Execute()</a>, <a class="el" href="_cl_arg_min_max_workload_8cpp_source.xhtml#l00075">ClArgMinMaxWorkload::Execute()</a>, <a class="el" href="_cl_l2_normalization_float_workload_8cpp_source.xhtml#l00047">ClL2NormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_greater_workload_8cpp_source.xhtml#l00056">ClGreaterWorkload&lt; T &gt;::Execute()</a>, <a class="el" href="_cl_softmax_uint8_workload_8cpp_source.xhtml#l00040">ClSoftmaxUint8Workload::Execute()</a>, <a class="el" href="_cl_depth_to_space_workload_8cpp_source.xhtml#l00060">ClDepthToSpaceWorkload::Execute()</a>, <a class="el" href="_cl_multiplication_workload_8cpp_source.xhtml#l00052">ClMultiplicationWorkload::Execute()</a>, <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00090">ClStridedSliceWorkload::Execute()</a>, <a class="el" href="_cl_quantized_lstm_workload_8cpp_source.xhtml#l00136">ClQuantizedLstmWorkload::Execute()</a>, <a class="el" href="_cl_division_float_workload_8cpp_source.xhtml#l00040">ClDivisionFloatWorkload::Execute()</a>, <a class="el" href="_cl_space_to_batch_nd_workload_8cpp_source.xhtml#l00079">ClSpaceToBatchNdWorkload::Execute()</a>, <a class="el" href="_cl_pooling2d_workload_8cpp_source.xhtml#l00054">ClPooling2dWorkload::Execute()</a>, <a class="el" href="_cl_batch_normalization_float_workload_8cpp_source.xhtml#l00092">ClBatchNormalizationFloatWorkload::Execute()</a>, <a class="el" href="_cl_depthwise_convolution_workload_8cpp_source.xhtml#l00148">ClDepthwiseConvolutionWorkload::Execute()</a>, <a class="el" href="_cl_convolution2d_workload_8cpp_source.xhtml#l00110">ClConvolution2dWorkload::Execute()</a>, <a class="el" href="_cl_fully_connected_workload_8cpp_source.xhtml#l00084">ClFullyConnectedWorkload::Execute()</a>, <a class="el" href="_cl_transpose_workload_8cpp_source.xhtml#l00043">ClTransposeWorkload::Execute()</a>, <a class="el" href="_cl_permute_workload_8cpp_source.xhtml#l00045">ClPermuteWorkload::Execute()</a>, and <a class="el" href="_cl_transpose_convolution2d_workload_8cpp_source.xhtml#l00098">ClTransposeConvolution2dWorkload::Execute()</a>.</p>
24748<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;{</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">try</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">function</span>.run();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">catch</span> (cl::Error&amp; error)</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; <span class="keywordflow">throw</span> <a class="code" href="namespacearmnn.xhtml#a2192b5ff59aacdb27f8b0238323915dc">WrapClError</a>(error, location);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a2192b5ff59aacdb27f8b0238323915dc"><div class="ttname"><a href="namespacearmnn.xhtml#a2192b5ff59aacdb27f8b0238323915dc">armnn::WrapClError</a></div><div class="ttdeci">RuntimeException WrapClError(const cl::Error &amp;clError, const CheckLocation &amp;location)</div><div class="ttdef"><b>Definition:</b> <a href="_cl_workload_utils_8hpp_source.xhtml#l00123">ClWorkloadUtils.hpp:123</a></div></div>
24749</div><!-- fragment -->
24750</div>
24751</div>
24752<a id="a01fa2d4db2c1b4ee5269a31e514f37ec"></a>
24753<h2 class="memtitle"><span class="permalink"><a href="#a01fa2d4db2c1b4ee5269a31e514f37ec">&#9670;&nbsp;</a></span>RuntimeLoadedNetworksReserve()</h2>
24754
24755<div class="memitem">
24756<div class="memproto">
24757 <table class="memname">
24758 <tr>
24759 <td class="memname">void RuntimeLoadedNetworksReserve </td>
24760 <td>(</td>
24761 <td class="paramtype"><a class="el" href="classarmnn_1_1_runtime.xhtml">armnn::Runtime</a> *&#160;</td>
24762 <td class="paramname"><em>runtime</em></td><td>)</td>
24763 <td></td>
24764 </tr>
24765 </table>
24766</div><div class="memdoc">
24767
24768<p class="definition">Definition at line <a class="el" href="_runtime_tests_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_runtime_tests_8cpp_source.xhtml">RuntimeTests.cpp</a>.</p>
24769
24770<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>.</p>
24771
24772<p class="reference">Referenced by <a class="el" href="_runtime_tests_8cpp_source.xhtml#l00037">BOOST_AUTO_TEST_CASE()</a>.</p>
24773<div class="fragment"><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; runtime-&gt;m_LoadedNetworks.reserve(1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div></div><!-- fragment -->
24774</div>
24775</div>
24776<a id="a40c8a268a9dc9dc910e348534d479f7a"></a>
24777<h2 class="memtitle"><span class="permalink"><a href="#a40c8a268a9dc9dc910e348534d479f7a">&#9670;&nbsp;</a></span>SampleDynamicBackendId()</h2>
24778
24779<div class="memitem">
24780<div class="memproto">
24781 <table class="memname">
24782 <tr>
24783 <td class="memname">constexpr const char* armnn::SampleDynamicBackendId </td>
24784 <td>(</td>
24785 <td class="paramname"></td><td>)</td>
24786 <td></td>
24787 </tr>
24788 </table>
24789</div><div class="memdoc">
24790
24791<p class="definition">Definition at line <a class="el" href="_sample_dynamic_backend_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="_sample_dynamic_backend_8cpp_source.xhtml">SampleDynamicBackend.cpp</a>.</p>
24792
24793<p class="reference">References <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00044">OptimizationViews::AddUntouchedSubgraph()</a>.</p>
24794<div class="fragment"><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;{ <span class="keywordflow">return</span> <span class="stringliteral">&quot;SampleDynamic&quot;</span>; }</div></div><!-- fragment -->
24795</div>
24796</div>
24797<a id="a5d3468fb5880eb444cd25b55a86220ff"></a>
24798<h2 class="memtitle"><span class="permalink"><a href="#a5d3468fb5880eb444cd25b55a86220ff">&#9670;&nbsp;</a></span>SelectTensorHandleStrategy()</h2>
24799
24800<div class="memitem">
24801<div class="memproto">
24802 <table class="memname">
24803 <tr>
24804 <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> SelectTensorHandleStrategy </td>
24805 <td>(</td>
24806 <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
24807 <td class="paramname"><em>optGraph</em>, </td>
24808 </tr>
24809 <tr>
24810 <td class="paramkey"></td>
24811 <td></td>
24812 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
24813 <td class="paramname"><em>backends</em>, </td>
24814 </tr>
24815 <tr>
24816 <td class="paramkey"></td>
24817 <td></td>
24818 <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
24819 <td class="paramname"><em>registry</em>, </td>
24820 </tr>
24821 <tr>
24822 <td class="paramkey"></td>
24823 <td></td>
24824 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::vector&lt; std::string &gt; &amp;&gt;&#160;</td>
24825 <td class="paramname"><em>errMessages</em>&#160;</td>
24826 </tr>
24827 <tr>
24828 <td></td>
24829 <td>)</td>
24830 <td></td><td></td>
24831 </tr>
24832 </table>
24833</div><div class="memdoc">
24834
24835<p class="definition">Definition at line <a class="el" href="_network_8cpp_source.xhtml#l00824">824</a> of file <a class="el" href="_network_8cpp_source.xhtml">Network.cpp</a>.</p>
24836
24837<p class="reference">References <a class="el" href="_network_8cpp_source.xhtml#l00747">CalculateEdgeStrategy()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00638">CalculateSlotOption()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00546">CalculateSlotOptionForInput()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00628">CalculateSlotOptionForOutput()</a>, <a class="el" href="_graph_8hpp_source.xhtml#l00039">Graph::ForEachLayer()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00263">Layer::GetBackendId()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00125">OutputSlot::GetConnections()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00308">Layer::GetNumOutputSlots()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00312">Layer::GetOutputSlot()</a>, <a class="el" href="_layer_8hpp_source.xhtml#l00259">Layer::GetType()</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">Input</a>, <a class="el" href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00022">ITensorHandleFactory::LegacyFactoryId</a>, <a class="el" href="_network_8hpp_source.xhtml#l00288">OptimizationResult::m_Error</a>, <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">Output</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00177">OutputSlot::SetEdgeStrategy()</a>, <a class="el" href="_layer_8cpp_source.xhtml#l00167">OutputSlot::SetTensorHandleFactory()</a>, and <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">Undefined</a>.</p>
24838
24839<p class="reference">Referenced by <a class="el" href="_tensor_handle_strategy_test_8cpp_source.xhtml#l00293">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
24840<div class="fragment"><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;{</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; OptimizationResult result;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; optGraph.ForEachLayer([&amp;backends, &amp;registry, &amp;result, &amp;errMessages](Layer* layer)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; BOOST_ASSERT(layer);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="comment">// Lets make sure the backend is in our list of supported backends. Something went wrong during backend</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// assignment if this check fails</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; BOOST_ASSERT(backends.find(layer-&gt;GetBackendId()) != backends.end());</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">// Check each output separately</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> slotIdx = 0; slotIdx &lt; layer-&gt;GetNumOutputSlots(); slotIdx++)</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; OutputSlot&amp; outputSlot = layer-&gt;GetOutputSlot(slotIdx);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">ITensorHandleFactory::FactoryId</a> slotOption = ITensorHandleFactory::LegacyFactoryId;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="comment">// Calculate the factory to use which results in the fewest copies being made.</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">switch</span>(layer-&gt;GetType())</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <span class="keywordflow">case</span> LayerType::Input:</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; slotOption = <a class="code" href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">CalculateSlotOptionForInput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">case</span> LayerType::Output:</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; slotOption = <a class="code" href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">CalculateSlotOptionForOutput</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; slotOption = <a class="code" href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">CalculateSlotOption</a>(backends, outputSlot, registry);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; outputSlot.SetTensorHandleFactory(slotOption);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// Now determine the &quot;best&quot; edge strategy for each connection given the slotOption.</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> connectionIdx = 0;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp;&amp; connection : outputSlot.GetConnections())</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keyword">const</span> Layer&amp; connectedLayer = connection-&gt;GetOwningLayer();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> strategy = <a class="code" href="namespacearmnn.xhtml#ab6ed577caec49def150e231c63af0d12">CalculateEdgeStrategy</a>(backends, slotOption, *layer, connectedLayer, registry);</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="keywordflow">if</span> (strategy == EdgeStrategy::Undefined)</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; result.m_Error = <span class="keyword">true</span>;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (errMessages)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; errMessages.value().emplace_back(<span class="stringliteral">&quot;Could not find valid strategy required for compatibility&quot;</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="stringliteral">&quot; between backends.&quot;</span>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; outputSlot.SetEdgeStrategy(connectionIdx, strategy);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; connectionIdx++;</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; }</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; });</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="keywordflow">return</span> result;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a8d9f52bbb69750456acca06988beabda"><div class="ttname"><a href="namespacearmnn.xhtml#a8d9f52bbb69750456acca06988beabda">armnn::CalculateSlotOption</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOption(BackendsMap &amp;backends, OutputSlot &amp;outputSlot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00638">Network.cpp:638</a></div></div>
24841<div class="ttc" id="namespacearmnn_xhtml_ab46c7f5f4736d550ab0e5e05a0fff4a9"><div class="ttname"><a href="namespacearmnn.xhtml#ab46c7f5f4736d550ab0e5e05a0fff4a9">armnn::CalculateSlotOptionForOutput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForOutput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00628">Network.cpp:628</a></div></div>
24842<div class="ttc" id="namespacearmnn_xhtml_ab6ed577caec49def150e231c63af0d12"><div class="ttname"><a href="namespacearmnn.xhtml#ab6ed577caec49def150e231c63af0d12">armnn::CalculateEdgeStrategy</a></div><div class="ttdeci">EdgeStrategy CalculateEdgeStrategy(BackendsMap &amp;backends, ITensorHandleFactory::FactoryId srcFactoryId, const Layer &amp;layer, const Layer &amp;connectedLayer, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00747">Network.cpp:747</a></div></div>
24843<div class="ttc" id="namespacearmnn_xhtml_a947e07902b1b5d98b57eeae34053146b"><div class="ttname"><a href="namespacearmnn.xhtml#a947e07902b1b5d98b57eeae34053146b">armnn::FactoryId</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId FactoryId</div><div class="ttdef"><b>Definition:</b> <a href="_cl_tensor_handle_factory_8cpp_source.xhtml#l00020">ClTensorHandleFactory.cpp:20</a></div></div>
24844<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">armnn::EdgeStrategy</a></div><div class="ttdeci">EdgeStrategy</div><div class="ttdef"><b>Definition:</b> <a href="include_2armnn_2backends_2_i_tensor_handle_factory_8hpp_source.xhtml#l00064">ITensorHandleFactory.hpp:64</a></div></div>
24845<div class="ttc" id="namespacearmnn_xhtml_accb1637c58e1523f740025e0d0e7c6dd"><div class="ttname"><a href="namespacearmnn.xhtml#accb1637c58e1523f740025e0d0e7c6dd">armnn::CalculateSlotOptionForInput</a></div><div class="ttdeci">ITensorHandleFactory::FactoryId CalculateSlotOptionForInput(BackendsMap &amp;backends, OutputSlot &amp;slot, TensorHandleFactoryRegistry &amp;registry)</div><div class="ttdef"><b>Definition:</b> <a href="_network_8cpp_source.xhtml#l00546">Network.cpp:546</a></div></div>
24846</div><!-- fragment -->
24847</div>
24848</div>
24849<a id="a7f8325a4bc02f2f687ba1968b595ec0a"></a>
24850<h2 class="memtitle"><span class="permalink"><a href="#a7f8325a4bc02f2f687ba1968b595ec0a">&#9670;&nbsp;</a></span>SetAllLoggingSinks()</h2>
24851
24852<div class="memitem">
24853<div class="memproto">
24854 <table class="memname">
24855 <tr>
24856 <td class="memname">void SetAllLoggingSinks </td>
24857 <td>(</td>
24858 <td class="paramtype">bool&#160;</td>
24859 <td class="paramname"><em>standardOut</em>, </td>
24860 </tr>
24861 <tr>
24862 <td class="paramkey"></td>
24863 <td></td>
24864 <td class="paramtype">bool&#160;</td>
24865 <td class="paramname"><em>debugOut</em>, </td>
24866 </tr>
24867 <tr>
24868 <td class="paramkey"></td>
24869 <td></td>
24870 <td class="paramtype">bool&#160;</td>
24871 <td class="paramname"><em>coloured</em>&#160;</td>
24872 </tr>
24873 <tr>
24874 <td></td>
24875 <td>)</td>
24876 <td></td><td></td>
24877 </tr>
24878 </table>
24879</div><div class="memdoc">
24880
24881<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.xhtml#l00146">146</a> of file <a class="el" href="_logging_8cpp_source.xhtml">Logging.cpp</a>.</p>
24882
24883<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.xhtml#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.xhtml#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.xhtml#l00010">ConfigureLogging()</a>.</p>
24884<div class="fragment"><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;{</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; SetLoggingSinks&lt;LogSeverity::Trace&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; SetLoggingSinks&lt;LogSeverity::Debug&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; SetLoggingSinks&lt;LogSeverity::Info&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; SetLoggingSinks&lt;LogSeverity::Warning&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; SetLoggingSinks&lt;LogSeverity::Error&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; SetLoggingSinks&lt;LogSeverity::Fatal&gt;(standardOut, debugOut, coloured);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div></div><!-- fragment -->
24885</div>
24886</div>
24887<a id="a460e01ad4cd0bfa6bde4eccaf0e77220"></a>
24888<h2 class="memtitle"><span class="permalink"><a href="#a460e01ad4cd0bfa6bde4eccaf0e77220">&#9670;&nbsp;</a></span>SetClSliceData()</h2>
24889
24890<div class="memitem">
24891<div class="memproto">
24892<table class="mlabels">
24893 <tr>
24894 <td class="mlabels-left">
24895 <table class="memname">
24896 <tr>
24897 <td class="memname">auto armnn::SetClSliceData </td>
24898 <td>(</td>
24899 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24900 <td class="paramname"><em>m_begin</em>, </td>
24901 </tr>
24902 <tr>
24903 <td class="paramkey"></td>
24904 <td></td>
24905 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
24906 <td class="paramname"><em>m_size</em>&#160;</td>
24907 </tr>
24908 <tr>
24909 <td></td>
24910 <td>)</td>
24911 <td></td><td></td>
24912 </tr>
24913 </table>
24914 </td>
24915 <td class="mlabels-right">
24916<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24917 </tr>
24918</table>
24919</div><div class="memdoc">
24920
24921<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00066">66</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
24922
24923<p class="reference">Referenced by <a class="el" href="_cl_slice_workload_8cpp_source.xhtml#l00034">ClSliceWorkload::ClSliceWorkload()</a>.</p>
24924<div class="fragment"><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="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</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> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</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> std::make_tuple(starts, ends);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
24925</div><!-- fragment -->
24926</div>
24927</div>
24928<a id="a6d4bdf4368a1422943f8f2b1740ec491"></a>
24929<h2 class="memtitle"><span class="permalink"><a href="#a6d4bdf4368a1422943f8f2b1740ec491">&#9670;&nbsp;</a></span>SetClStridedSliceData()</h2>
24930
24931<div class="memitem">
24932<div class="memproto">
24933<table class="mlabels">
24934 <tr>
24935 <td class="mlabels-left">
24936 <table class="memname">
24937 <tr>
24938 <td class="memname">auto armnn::SetClStridedSliceData </td>
24939 <td>(</td>
24940 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24941 <td class="paramname"><em>m_begin</em>, </td>
24942 </tr>
24943 <tr>
24944 <td class="paramkey"></td>
24945 <td></td>
24946 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24947 <td class="paramname"><em>m_end</em>, </td>
24948 </tr>
24949 <tr>
24950 <td class="paramkey"></td>
24951 <td></td>
24952 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
24953 <td class="paramname"><em>m_stride</em>&#160;</td>
24954 </tr>
24955 <tr>
24956 <td></td>
24957 <td>)</td>
24958 <td></td><td></td>
24959 </tr>
24960 </table>
24961 </td>
24962 <td class="mlabels-right">
24963<span class="mlabels"><span class="mlabel">inline</span></span> </td>
24964 </tr>
24965</table>
24966</div><div class="memdoc">
24967
24968<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00045">45</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
24969
24970<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>.</p>
24971<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</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; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</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;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
24972</div><!-- fragment -->
24973</div>
24974</div>
24975<a id="ac9aad76a34137b6359a867b282ea7cfb"></a>
24976<h2 class="memtitle"><span class="permalink"><a href="#ac9aad76a34137b6359a867b282ea7cfb">&#9670;&nbsp;</a></span>SetLogFilter()</h2>
24977
24978<div class="memitem">
24979<div class="memproto">
24980 <table class="memname">
24981 <tr>
24982 <td class="memname">void SetLogFilter </td>
24983 <td>(</td>
24984 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
24985 <td class="paramname"><em>level</em></td><td>)</td>
24986 <td></td>
24987 </tr>
24988 </table>
24989</div><div class="memdoc">
24990
24991<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.xhtml#l00028">28</a> of file <a class="el" href="_logging_8cpp_source.xhtml">Logging.cpp</a>.</p>
24992
24993<p class="reference">References <a class="el" href="_utils_8hpp_source.xhtml#l00035">ARMNN_FALLTHROUGH</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>, <a class="el" href="_logging_8hpp_source.xhtml#l00118">SimpleLogger&lt; Level &gt;::Enable()</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>, <a class="el" href="_logging_8hpp_source.xhtml#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>, <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>, and <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>.</p>
24994
24995<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.xhtml#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_unit_tests_8cpp_source.xhtml#l00068">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_utils_8cpp_source.xhtml#l00010">ConfigureLogging()</a>.</p>
24996<div class="fragment"><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; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">switch</span> (level)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> LogSeverity::Trace:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; SimpleLogger&lt;LogSeverity::Trace&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">LogSeverity::Debug</a>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; SimpleLogger&lt;LogSeverity::Debug&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">case</span> LogSeverity::Info:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; SimpleLogger&lt;LogSeverity::Info&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> LogSeverity::Warning:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; SimpleLogger&lt;LogSeverity::Warning&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">case</span> LogSeverity::Error:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; SimpleLogger&lt;LogSeverity::Error&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> LogSeverity::Fatal:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; SimpleLogger&lt;LogSeverity::Fatal&gt;::Get().Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; BOOST_ASSERT(<span class="keyword">false</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a5aae369ef847a00062925cea8e9be9c4"><div class="ttname"><a href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a></div><div class="ttdeci">void Debug(const TensorInfo &amp;inputInfo, const T *inputData, LayerGuid guid, const std::string &amp;layerName, unsigned int slotIndex)</div><div class="ttdef"><b>Definition:</b> <a href="_debug_8cpp_source.xhtml#l00020">Debug.cpp:20</a></div></div>
24997<div class="ttc" id="_utils_8hpp_xhtml_abbf421eb1186af0d505648ed2ea54a00"><div class="ttname"><a href="_utils_8hpp.xhtml#abbf421eb1186af0d505648ed2ea54a00">ARMNN_FALLTHROUGH</a></div><div class="ttdeci">#define ARMNN_FALLTHROUGH</div><div class="ttdef"><b>Definition:</b> <a href="_utils_8hpp_source.xhtml#l00035">Utils.hpp:35</a></div></div>
24998</div><!-- fragment -->
24999</div>
25000</div>
25001<a id="a5f523aee1752323aeaf899085649320b"></a>
25002<h2 class="memtitle"><span class="permalink"><a href="#a5f523aee1752323aeaf899085649320b">&#9670;&nbsp;</a></span>SetLoggingSinks()</h2>
25003
25004<div class="memitem">
25005<div class="memproto">
25006<table class="mlabels">
25007 <tr>
25008 <td class="mlabels-left">
25009 <table class="memname">
25010 <tr>
25011 <td class="memname">void armnn::SetLoggingSinks </td>
25012 <td>(</td>
25013 <td class="paramtype">bool&#160;</td>
25014 <td class="paramname"><em>standardOut</em>, </td>
25015 </tr>
25016 <tr>
25017 <td class="paramkey"></td>
25018 <td></td>
25019 <td class="paramtype">bool&#160;</td>
25020 <td class="paramname"><em>debugOut</em>, </td>
25021 </tr>
25022 <tr>
25023 <td class="paramkey"></td>
25024 <td></td>
25025 <td class="paramtype">bool&#160;</td>
25026 <td class="paramname"><em>coloured</em>&#160;</td>
25027 </tr>
25028 <tr>
25029 <td></td>
25030 <td>)</td>
25031 <td></td><td></td>
25032 </tr>
25033 </table>
25034 </td>
25035 <td class="mlabels-right">
25036<span class="mlabels"><span class="mlabel">inline</span></span> </td>
25037 </tr>
25038</table>
25039</div><div class="memdoc">
25040
25041<p class="definition">Definition at line <a class="el" href="_logging_8cpp_source.xhtml#l00122">122</a> of file <a class="el" href="_logging_8cpp_source.xhtml">Logging.cpp</a>.</p>
25042
25043<p class="reference">References <a class="el" href="_logging_8hpp_source.xhtml#l00134">SimpleLogger&lt; Level &gt;::AddSink()</a>, <a class="el" href="_logging_8hpp_source.xhtml#l00112">SimpleLogger&lt; Level &gt;::Get()</a>, and <a class="el" href="_logging_8hpp_source.xhtml#l00129">SimpleLogger&lt; Level &gt;::RemoveAllSinks()</a>.</p>
25044<div class="fragment"><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;{</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; SimpleLogger&lt;Level&gt;::Get().RemoveAllSinks();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (standardOut)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (coloured)</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; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; std::make_shared&lt;StandardOutputColourSink&gt;(Level));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; } <span class="keywordflow">else</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; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; std::make_shared&lt;StandardOutputSink&gt;());</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</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; <span class="keywordflow">if</span> (debugOut)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; SimpleLogger&lt;Level&gt;::Get().AddSink(</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; std::make_shared&lt;DebugOutputSink&gt;());</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;}</div></div><!-- fragment -->
25045</div>
25046</div>
25047<a id="ab40e30cea5a328a3c35aa32f9b7db1c1"></a>
25048<h2 class="memtitle"><span class="permalink"><a href="#ab40e30cea5a328a3c35aa32f9b7db1c1">&#9670;&nbsp;</a></span>SetNeonSliceData()</h2>
25049
25050<div class="memitem">
25051<div class="memproto">
25052<table class="mlabels">
25053 <tr>
25054 <td class="mlabels-left">
25055 <table class="memname">
25056 <tr>
25057 <td class="memname">auto armnn::SetNeonSliceData </td>
25058 <td>(</td>
25059 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
25060 <td class="paramname"><em>m_begin</em>, </td>
25061 </tr>
25062 <tr>
25063 <td class="paramkey"></td>
25064 <td></td>
25065 <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
25066 <td class="paramname"><em>m_size</em>&#160;</td>
25067 </tr>
25068 <tr>
25069 <td></td>
25070 <td>)</td>
25071 <td></td><td></td>
25072 </tr>
25073 </table>
25074 </td>
25075 <td class="mlabels-right">
25076<span class="mlabels"><span class="mlabel">inline</span></span> </td>
25077 </tr>
25078</table>
25079</div><div class="memdoc">
25080
25081<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00088">88</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.xhtml">NeonWorkloadUtils.hpp</a>.</p>
25082
25083<p class="reference">Referenced by <a class="el" href="_neon_slice_workload_8cpp_source.xhtml#l00034">NeonSliceWorkload::NeonSliceWorkload()</a>.</p>
25084<div class="fragment"><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// This function must translate the size vector given to an end vector</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// expected by the ACL NESlice workload</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// For strided slices, we have the relationship size = (end - begin) / stride</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">// For slice, we assume stride to be a vector of all ones, yielding the formula</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// size = (end - begin) therefore we know end = size + begin</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex] + m_size[revertedIndex]));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</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; <span class="keywordflow">return</span> std::make_tuple(starts, ends);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
25085</div><!-- fragment -->
25086</div>
25087</div>
25088<a id="a01d1e745f360ccd0b655214645bcef32"></a>
25089<h2 class="memtitle"><span class="permalink"><a href="#a01d1e745f360ccd0b655214645bcef32">&#9670;&nbsp;</a></span>SetNeonStridedSliceData()</h2>
25090
25091<div class="memitem">
25092<div class="memproto">
25093<table class="mlabels">
25094 <tr>
25095 <td class="mlabels-left">
25096 <table class="memname">
25097 <tr>
25098 <td class="memname">auto armnn::SetNeonStridedSliceData </td>
25099 <td>(</td>
25100 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
25101 <td class="paramname"><em>m_begin</em>, </td>
25102 </tr>
25103 <tr>
25104 <td class="paramkey"></td>
25105 <td></td>
25106 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
25107 <td class="paramname"><em>m_end</em>, </td>
25108 </tr>
25109 <tr>
25110 <td class="paramkey"></td>
25111 <td></td>
25112 <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
25113 <td class="paramname"><em>m_stride</em>&#160;</td>
25114 </tr>
25115 <tr>
25116 <td></td>
25117 <td>)</td>
25118 <td></td><td></td>
25119 </tr>
25120 </table>
25121 </td>
25122 <td class="mlabels-right">
25123<span class="mlabels"><span class="mlabel">inline</span></span> </td>
25124 </tr>
25125</table>
25126</div><div class="memdoc">
25127
25128<p class="definition">Definition at line <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00066">66</a> of file <a class="el" href="_neon_workload_utils_8hpp_source.xhtml">NeonWorkloadUtils.hpp</a>.</p>
25129
25130<p class="reference">Referenced by <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
25131<div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> starts;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> ends;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">arm_compute::Coordinates</a> strides;</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> num_dims = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(m_begin.size());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; num_dims; i++)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> revertedIndex = num_dims - i - 1;</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; starts.set(i, static_cast&lt;int&gt;(m_begin[revertedIndex]));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ends.set(i, static_cast&lt;int&gt;(m_end[revertedIndex]));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; strides.set(i, static_cast&lt;int&gt;(m_stride[revertedIndex]));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</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; <span class="keywordflow">return</span> std::make_tuple(starts, ends, strides);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ac6e86c1def7f674d3c4cb7f577874aa6"><div class="ttname"><a href="namespacearmnn.xhtml#ac6e86c1def7f674d3c4cb7f577874aa6">armnn::Coordinates</a></div><div class="ttdeci">std::array&lt; unsigned int, MaxNumOfTensorDimensions &gt; Coordinates</div><div class="ttdef"><b>Definition:</b> <a href="_internal_types_8hpp_source.xhtml#l00080">InternalTypes.hpp:80</a></div></div>
25132</div><!-- fragment -->
25133</div>
25134</div>
25135<a id="a52cbff9d344ba4a1fe01d4da2c1f7ba2"></a>
25136<h2 class="memtitle"><span class="permalink"><a href="#a52cbff9d344ba4a1fe01d4da2c1f7ba2">&#9670;&nbsp;</a></span>SetupQuantize()</h2>
25137
25138<div class="memitem">
25139<div class="memproto">
25140 <table class="memname">
25141 <tr>
25142 <td class="memname">std::vector&lt;uint8_t&gt; armnn::SetupQuantize </td>
25143 <td>(</td>
25144 <td class="paramtype">float&#160;</td>
25145 <td class="paramname"><em>value</em></td><td>)</td>
25146 <td></td>
25147 </tr>
25148 </table>
25149</div><div class="memdoc">
25150
25151<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02836">2836</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
25152
25153<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, and <a class="el" href="_tensor_8cpp_source.xhtml#l00259">TensorInfo::SetQuantizationScale()</a>.</p>
25154
25155<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02851">BOOST_AUTO_TEST_CASE()</a>.</p>
25156<div class="fragment"><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="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> inputInfo({ 1, 2, 2 }, <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a>);</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160; inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a685739c4eb65a580e075282cfe6787d6">SetQuantizationScale</a>(1.0f);</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; inputInfo.SetQuantizationOffset(1);</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; std::vector&lt;float&gt; input({ value, 0.0f, 0.0f, 1.0f });</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; <span class="keyword">const</span> std::vector&lt;float&gt; &amp;inputRef = input;</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160;</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; <span class="keyword">auto</span> output = armnnUtils::QuantizedVector&lt;uint8_t&gt;(inputRef,</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; inputInfo.GetQuantizationScale(),</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; inputInfo.GetQuantizationOffset());</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> output;</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160;}</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#l00053">Tensor.hpp:53</a></div></div>
25157<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#l00259">Tensor.cpp:259</a></div></div>
25158<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
25159</div><!-- fragment -->
25160</div>
25161</div>
25162<a id="a13c7d751e4d37f65a6d40c3c6e50d2b8"></a>
25163<h2 class="memtitle"><span class="permalink"><a href="#a13c7d751e4d37f65a6d40c3c6e50d2b8">&#9670;&nbsp;</a></span>SetValueChecked()</h2>
25164
25165<div class="memitem">
25166<div class="memproto">
25167 <table class="memname">
25168 <tr>
25169 <td class="memname">void armnn::SetValueChecked </td>
25170 <td>(</td>
25171 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; T &amp;&gt;&#160;</td>
25172 <td class="paramname"><em>optionalRef</em>, </td>
25173 </tr>
25174 <tr>
25175 <td class="paramkey"></td>
25176 <td></td>
25177 <td class="paramtype">V &amp;&amp;&#160;</td>
25178 <td class="paramname"><em>val</em>&#160;</td>
25179 </tr>
25180 <tr>
25181 <td></td>
25182 <td>)</td>
25183 <td></td><td></td>
25184 </tr>
25185 </table>
25186</div><div class="memdoc">
25187
25188<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00017">17</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
25189
25190<p class="reference">References <a class="el" href="_optional_8hpp_source.xhtml#l00146">OptionalReferenceSwitch&lt; std::is_reference&lt; T &gt;::value, T &gt;::value()</a>.</p>
25191
25192<p class="reference">Referenced by <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00070">FalseFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00078">FalseFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00094">FalseFuncI32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00086">FalseFuncU8()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00110">FalseInputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00102">FalseInputFuncF32()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00126">FalseOutputFuncF16()</a>, <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00118">FalseOutputFuncF32()</a>, <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00216">NeonLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00246">ClLayerSupport::IsConcatSupported()</a>, <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00736">ClLayerSupport::IsSplitterSupported()</a>, and <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00719">NeonLayerSupport::IsSplitterSupported()</a>.</p>
25193<div class="fragment"><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="keywordflow">if</span> (optionalRef)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; optionalRef.value() = val;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;}</div></div><!-- fragment -->
25194</div>
25195</div>
25196<a id="a044ea0cc993d4d1fbe4ec877b17b8d39"></a>
25197<h2 class="memtitle"><span class="permalink"><a href="#a044ea0cc993d4d1fbe4ec877b17b8d39">&#9670;&nbsp;</a></span>Slice()</h2>
25198
25199<div class="memitem">
25200<div class="memproto">
25201 <table class="memname">
25202 <tr>
25203 <td class="memname">void Slice </td>
25204 <td>(</td>
25205 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25206 <td class="paramname"><em>inputInfo</em>, </td>
25207 </tr>
25208 <tr>
25209 <td class="paramkey"></td>
25210 <td></td>
25211 <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
25212 <td class="paramname"><em>descriptor</em>, </td>
25213 </tr>
25214 <tr>
25215 <td class="paramkey"></td>
25216 <td></td>
25217 <td class="paramtype">const void *&#160;</td>
25218 <td class="paramname"><em>inputData</em>, </td>
25219 </tr>
25220 <tr>
25221 <td class="paramkey"></td>
25222 <td></td>
25223 <td class="paramtype">void *&#160;</td>
25224 <td class="paramname"><em>outputData</em>, </td>
25225 </tr>
25226 <tr>
25227 <td class="paramkey"></td>
25228 <td></td>
25229 <td class="paramtype">unsigned int&#160;</td>
25230 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
25231 </tr>
25232 <tr>
25233 <td></td>
25234 <td>)</td>
25235 <td></td><td></td>
25236 </tr>
25237 </table>
25238</div><div class="memdoc">
25239
25240<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.xhtml#l00016">16</a> of file <a class="el" href="backends_2reference_2workloads_2_slice_8cpp_source.xhtml">Slice.cpp</a>.</p>
25241
25242<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00943">SliceDescriptor::m_Begin</a>, and <a class="el" href="_descriptors_8hpp_source.xhtml#l00946">SliceDescriptor::m_Size</a>.</p>
25243
25244<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02153">BOOST_AUTO_TEST_CASE()</a>.</p>
25245<div class="fragment"><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="keyword">const</span> TensorShape&amp; inputShape = inputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numDims = inputShape.GetNumDimensions();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; BOOST_ASSERT(descriptor.m_Begin.size() == numDims);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; BOOST_ASSERT(descriptor.m_Size.size() == numDims);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; constexpr <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> maxNumDims = 4;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; BOOST_ASSERT(numDims &lt;= maxNumDims);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; std::vector&lt;unsigned int&gt; paddedInput(4);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; std::vector&lt;unsigned int&gt; paddedBegin(4);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::vector&lt;unsigned int&gt; paddedSize (4);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numPaddingDims = maxNumDims - numDims;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0u; i &lt; maxNumDims; ++i)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">if</span> (i &lt; numPaddingDims)</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; paddedInput[i] = 1u;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; paddedBegin[i] = 0u;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; paddedSize[i] = 1u;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">else</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"> 46</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = i - numPaddingDims;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; paddedInput[i] = inputShape[j];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; paddedBegin[i] = descriptor.m_Begin[j];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; paddedSize[i] = descriptor.m_Size[j];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim0 = paddedInput[0];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim1 = paddedInput[1];</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim2 = paddedInput[2];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim3 = paddedInput[3];</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin0 = paddedBegin[0];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin1 = paddedBegin[1];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin2 = paddedBegin[2];</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> begin3 = paddedBegin[3];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size0 = paddedSize[0];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size1 = paddedSize[1];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size2 = paddedSize[2];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size3 = paddedSize[3];</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; BOOST_ASSERT(begin0 + size0 &lt;= dim0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; BOOST_ASSERT(begin1 + size1 &lt;= dim1);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(begin2 + size2 &lt;= dim2);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; BOOST_ASSERT(begin3 + size3 &lt;= dim3);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(dim0);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx0 = begin0; idx0 &lt; begin0 + size0; ++idx0)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx1 = begin1; idx1 &lt; begin1 + size1; ++idx1)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> idx2 = begin2; idx2 &lt; begin2 + size2; ++idx2)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</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> idx3 = begin3; idx3 &lt; begin3 + size3; ++idx3)</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputOffset =</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; (((idx0 * dim1 + idx1) * dim2 + idx2) * dim3 + idx3) * dataTypeSize;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; output += dataTypeSize;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</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>
25246</div><!-- fragment -->
25247</div>
25248</div>
25249<a id="aa999ff2585ad75b95954a9323f63c32b"></a>
25250<h2 class="memtitle"><span class="permalink"><a href="#aa999ff2585ad75b95954a9323f63c32b">&#9670;&nbsp;</a></span>Softmax()</h2>
25251
25252<div class="memitem">
25253<div class="memproto">
25254 <table class="memname">
25255 <tr>
25256 <td class="memname">void Softmax </td>
25257 <td>(</td>
25258 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
25259 <td class="paramname"><em>in</em>, </td>
25260 </tr>
25261 <tr>
25262 <td class="paramkey"></td>
25263 <td></td>
25264 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
25265 <td class="paramname"><em>out</em>, </td>
25266 </tr>
25267 <tr>
25268 <td class="paramkey"></td>
25269 <td></td>
25270 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25271 <td class="paramname"><em>inputTensorInfo</em>, </td>
25272 </tr>
25273 <tr>
25274 <td class="paramkey"></td>
25275 <td></td>
25276 <td class="paramtype">float&#160;</td>
25277 <td class="paramname"><em>beta</em>, </td>
25278 </tr>
25279 <tr>
25280 <td class="paramkey"></td>
25281 <td></td>
25282 <td class="paramtype">int&#160;</td>
25283 <td class="paramname"><em>axis</em>&#160;</td>
25284 </tr>
25285 <tr>
25286 <td></td>
25287 <td>)</td>
25288 <td></td><td></td>
25289 </tr>
25290 </table>
25291</div><div class="memdoc">
25292
25293<p>Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. </p>
25294
25295<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.xhtml#l00017">17</a> of file <a class="el" href="backends_2reference_2workloads_2_softmax_8cpp_source.xhtml">Softmax.cpp</a>.</p>
25296
25297<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00043">TensorShape::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_utils_8cpp_source.xhtml#l00113">armnnUtils::GetNumElementsBetween()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
25298
25299<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02183">BOOST_AUTO_TEST_CASE()</a>.</p>
25300<div class="fragment"><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; BOOST_ASSERT_MSG(axis &lt; static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="stringliteral">&quot;Required axis index greater than number of dimensions.&quot;</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; BOOST_ASSERT_MSG(axis &gt;= -static_cast&lt;int&gt;(inputTensorInfo.GetNumDimensions()),</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="stringliteral">&quot;Required axis index lower than negative of the number of dimensions&quot;</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> uAxis = axis &lt; 0 ?</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; inputTensorInfo.GetNumDimensions() - <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(abs(axis))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; : static_cast&lt;unsigned int&gt;(axis);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape = inputTensorInfo.GetShape();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outerSize = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape, 0, uAxis);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axisSize = inputShape[uAxis];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> innerSize = <a class="code" href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a>(inputShape,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; uAxis + 1,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; inputShape.GetNumDimensions());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outer = 0; outer &lt; outerSize; ++outer)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBeginIdx = outer * axisSize * innerSize;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputEndIdx = inputBeginIdx + axisSize * innerSize;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBeginIdx = outer * axisSize * innerSize;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inner = 0; inner &lt; innerSize; ++inner, ++inputBeginIdx, ++inputEndIdx, ++outputBeginIdx)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Find max</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">float</span> maxValue = std::numeric_limits&lt;float&gt;::lowest();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; in[iter];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; maxValue = std::max(maxValue, in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</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;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">// Compute sum</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">float</span> sum = 0.0f;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; in[iter];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; sum += std::exp((in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta);</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;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// Compute result</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIter = outputBeginIdx;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; out[outputIter];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iter = inputBeginIdx; iter &lt; inputEndIdx; iter += innerSize, outputIter += innerSize)</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; out[outputIter];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; in[iter];</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; out.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(std::exp((in.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() - maxValue) * beta) / sum);</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; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_af57864f5e03358d14c2988edae912b8b"><div class="ttname"><a href="namespacearmnn_utils.xhtml#af57864f5e03358d14c2988edae912b8b">armnnUtils::GetNumElementsBetween</a></div><div class="ttdeci">unsigned int GetNumElementsBetween(const armnn::TensorShape &amp;shape, unsigned int firstAxisInclusive, unsigned int lastAxisExclusive)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00113">TensorUtils.cpp:113</a></div></div>
25301<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
25302<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
25303</div><!-- fragment -->
25304</div>
25305</div>
25306<a id="a4a180e425d4c19b2cdea4ce5760180e1"></a>
25307<h2 class="memtitle"><span class="permalink"><a href="#a4a180e425d4c19b2cdea4ce5760180e1">&#9670;&nbsp;</a></span>SpaceToBatchNd()</h2>
25308
25309<div class="memitem">
25310<div class="memproto">
25311 <table class="memname">
25312 <tr>
25313 <td class="memname">void SpaceToBatchNd </td>
25314 <td>(</td>
25315 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25316 <td class="paramname"><em>inputInfo</em>, </td>
25317 </tr>
25318 <tr>
25319 <td class="paramkey"></td>
25320 <td></td>
25321 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25322 <td class="paramname"><em>outputInfo</em>, </td>
25323 </tr>
25324 <tr>
25325 <td class="paramkey"></td>
25326 <td></td>
25327 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
25328 <td class="paramname"><em>params</em>, </td>
25329 </tr>
25330 <tr>
25331 <td class="paramkey"></td>
25332 <td></td>
25333 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
25334 <td class="paramname"><em>inputData</em>, </td>
25335 </tr>
25336 <tr>
25337 <td class="paramkey"></td>
25338 <td></td>
25339 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
25340 <td class="paramname"><em>outputData</em>&#160;</td>
25341 </tr>
25342 <tr>
25343 <td></td>
25344 <td>)</td>
25345 <td></td><td></td>
25346 </tr>
25347 </table>
25348</div><div class="memdoc">
25349
25350<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">34</a> of file <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml">SpaceToBatchNd.cpp</a>.</p>
25351
25352<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00801">SpaceToBatchNdDescriptor::m_BlockShape</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00806">SpaceToBatchNdDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00804">SpaceToBatchNdDescriptor::m_PadList</a>, <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">SpaceToBatchNd()</a>.</p>
25353
25354<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02211">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00034">SpaceToBatchNd()</a>, and <a class="el" href="_space_to_batch_nd_layer_8cpp_source.xhtml#l00023">SpaceToBatchNdLayer::SpaceToBatchNdLayer()</a>.</p>
25355<div class="fragment"><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; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputBatchSize = outputShape[0];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockHeight = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[0];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockWidth = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a02e143524aefddd40b485fcf7dea6696">m_BlockShape</a>[1];</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[0].first;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = params.<a class="code" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a85f98c94e11f65a6b73f831735c040f3">m_PadList</a>[1].first;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outB = 0; outB &lt; outputBatchSize; outB++)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inB = outB % inputBatchSize;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outB / inputBatchSize) % blockWidth;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outB / inputBatchSize) / blockWidth;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</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"> 72</span>&#160; <span class="keywordflow">if</span> (outH * blockHeight + shiftH &lt; paddingTop ||</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; outH * blockHeight + shiftH &gt;= paddingTop + inputHeight ||</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; outW * blockWidth + shiftW &lt; paddingLeft ||</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; outW * blockWidth + shiftW &gt;= paddingLeft + inputWidth)</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; outB,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; outH,</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; outW,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; c,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; dataLayout);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; outputData -= outOffset;</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"> 90</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> c = 0; c &lt; channels; c++)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; inB,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; (outH * blockHeight + shiftH) - paddingTop,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; (outW * blockWidth + shiftW) - paddingLeft,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; c,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; dataLayout);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; outB,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outH,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; outW,</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; c,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; dataLayout);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; outputData -= outOffset;</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; }</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; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
25356<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#l00088">Tensor.hpp:88</a></div></div>
25357<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
25358<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>
25359<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_xhtml_a85f98c94e11f65a6b73f831735c040f3"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a85f98c94e11f65a6b73f831735c040f3">armnn::SpaceToBatchNdDescriptor::m_PadList</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt; &gt; m_PadList</div><div class="ttdoc">Specifies the padding values for the input dimension: heightPad{top, bottom} widthPad{left, right}. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00804">Descriptors.hpp:804</a></div></div>
25360<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
25361<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::SpaceToBatchNdDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00806">Descriptors.hpp:806</a></div></div>
25362<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
25363<div class="ttc" id="namespacearmnn_xhtml_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00015">SpaceToBatchNd.cpp:15</a></div></div>
25364<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
25365<div class="ttc" id="structarmnn_1_1_space_to_batch_nd_descriptor_xhtml_a02e143524aefddd40b485fcf7dea6696"><div class="ttname"><a href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml#a02e143524aefddd40b485fcf7dea6696">armnn::SpaceToBatchNdDescriptor::m_BlockShape</a></div><div class="ttdeci">std::vector&lt; unsigned int &gt; m_BlockShape</div><div class="ttdoc">Block shape value. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00801">Descriptors.hpp:801</a></div></div>
25366<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
25367</div><!-- fragment -->
25368</div>
25369</div>
25370<a id="a5e1dc69443b64ad16b669388a6023f7a"></a>
25371<h2 class="memtitle"><span class="permalink"><a href="#a5e1dc69443b64ad16b669388a6023f7a">&#9670;&nbsp;</a></span>SpaceToDepth()</h2>
25372
25373<div class="memitem">
25374<div class="memproto">
25375 <table class="memname">
25376 <tr>
25377 <td class="memname">void SpaceToDepth </td>
25378 <td>(</td>
25379 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25380 <td class="paramname"><em>inputInfo</em>, </td>
25381 </tr>
25382 <tr>
25383 <td class="paramkey"></td>
25384 <td></td>
25385 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25386 <td class="paramname"><em>outputInfo</em>, </td>
25387 </tr>
25388 <tr>
25389 <td class="paramkey"></td>
25390 <td></td>
25391 <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
25392 <td class="paramname"><em>params</em>, </td>
25393 </tr>
25394 <tr>
25395 <td class="paramkey"></td>
25396 <td></td>
25397 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
25398 <td class="paramname"><em>inputData</em>, </td>
25399 </tr>
25400 <tr>
25401 <td class="paramkey"></td>
25402 <td></td>
25403 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
25404 <td class="paramname"><em>outputData</em>&#160;</td>
25405 </tr>
25406 <tr>
25407 <td></td>
25408 <td>)</td>
25409 <td></td><td></td>
25410 </tr>
25411 </table>
25412</div><div class="memdoc">
25413
25414<p class="definition">Definition at line <a class="el" href="_space_to_depth_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_space_to_depth_8cpp_source.xhtml">SpaceToDepth.cpp</a>.</p>
25415
25416<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00015">GetOffset()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00827">SpaceToDepthDescriptor::m_BlockSize</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>, <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="_space_to_depth_8cpp_source.xhtml#l00036">SpaceToDepth()</a>.</p>
25417
25418<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02242">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_space_to_depth_8cpp_source.xhtml#l00036">SpaceToDepth()</a>, and <a class="el" href="_space_to_depth_layer_8cpp_source.xhtml#l00023">SpaceToDepthLayer::SpaceToDepthLayer()</a>.</p>
25419<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> dataLayout = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">m_DataLayout</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&amp; inputShape = inputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a>&amp; outputShape = outputInfo.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputBatchSize = inputShape[0];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputChannels = inputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">GetHeightIndex</a>()];</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">GetWidthIndex</a>()];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputChannels = outputShape[dataLayout.<a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">GetChannelsIndex</a>()];</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> blockSize = params.<a class="code" href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6c6b8957f1e176867e5fb05b1a1a1486">m_BlockSize</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (blockSize == 0)</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">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.xhtml">InvalidArgumentException</a>(</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="stringliteral">&quot;Input shape must be divisible by block size in all spatial dimensions: Block size is&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="stringliteral">&quot; equal to zero&quot;</span>);</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;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outChannelIndex = 0; outChannelIndex &lt; outputChannels; outChannelIndex++)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inChannelIndex = outChannelIndex % inputChannels;</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftW = (outChannelIndex / inputChannels) % blockSize;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> shiftH = (outChannelIndex / inputChannels) / blockSize;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outH = 0; outH &lt; outputHeight; outH++)</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"> 72</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outW = 0; outW &lt; outputWidth; outW++)</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inBatchIndex = 0; inBatchIndex &lt; inputBatchSize; inBatchIndex++)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inOffset = <a class="code" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(inputShape,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; inChannelIndex,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; (outH * blockSize + shiftH),</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; (outW * blockSize + shiftW),</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; inBatchIndex,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayout);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outOffset = <a class="code" href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">GetOffset</a>(outputShape,</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; outChannelIndex,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; outH,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outW,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; inBatchIndex,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; dataLayout);</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"> 90</span>&#160; outputData += outOffset;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; inputData += inOffset;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; outputData.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputData.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; inputData -= inOffset;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; outputData -= outOffset;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div><div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a414e6f95548e6f7a01d5028b55ad3941"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a414e6f95548e6f7a01d5028b55ad3941">armnnUtils::DataLayoutIndexed::GetWidthIndex</a></div><div class="ttdeci">unsigned int GetWidthIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed.hpp:25</a></div></div>
25420<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#l00088">Tensor.hpp:88</a></div></div>
25421<div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
25422<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>
25423<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a61c00316c443adc233c24e85c6c5b740"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a61c00316c443adc233c24e85c6c5b740">armnnUtils::DataLayoutIndexed::GetHeightIndex</a></div><div class="ttdeci">unsigned int GetHeightIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed.hpp:24</a></div></div>
25424<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
25425<div class="ttc" id="namespacearmnn_xhtml_adafb0fd0a3f6435c2bdf41f971761ecf"><div class="ttname"><a href="namespacearmnn.xhtml#adafb0fd0a3f6435c2bdf41f971761ecf">armnn::GetOffset</a></div><div class="ttdeci">unsigned int GetOffset(const TensorShape &amp;shape, unsigned int b, unsigned int h, unsigned int w, unsigned int c, const DataLayoutIndexed &amp;dataLayout)</div><div class="ttdef"><b>Definition:</b> <a href="backends_2reference_2workloads_2_space_to_batch_n_d_8cpp_source.xhtml#l00015">SpaceToBatchNd.cpp:15</a></div></div>
25426<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
25427<div class="ttc" id="classarmnn_1_1_invalid_argument_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_invalid_argument_exception.xhtml">armnn::InvalidArgumentException</a></div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00080">Exceptions.hpp:80</a></div></div>
25428<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_xhtml_a6c6b8957f1e176867e5fb05b1a1a1486"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6c6b8957f1e176867e5fb05b1a1a1486">armnn::SpaceToDepthDescriptor::m_BlockSize</a></div><div class="ttdeci">unsigned int m_BlockSize</div><div class="ttdoc">Scalar specifying the input block size. It must be &gt;= 1. </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00827">Descriptors.hpp:827</a></div></div>
25429<div class="ttc" id="structarmnn_1_1_space_to_depth_descriptor_xhtml_a6089e1ca91914015777ea780a513131a"><div class="ttname"><a href="structarmnn_1_1_space_to_depth_descriptor.xhtml#a6089e1ca91914015777ea780a513131a">armnn::SpaceToDepthDescriptor::m_DataLayout</a></div><div class="ttdeci">DataLayout m_DataLayout</div><div class="ttdoc">The data layout to be used (NCHW, NHWC). </div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.xhtml#l00830">Descriptors.hpp:830</a></div></div>
25430<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml_a861b2621ee46e4b63379988b360b8cd9"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml#a861b2621ee46e4b63379988b360b8cd9">armnnUtils::DataLayoutIndexed::GetChannelsIndex</a></div><div class="ttdeci">unsigned int GetChannelsIndex() const</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed.hpp:23</a></div></div>
25431</div><!-- fragment -->
25432</div>
25433</div>
25434<a id="ac4d30f99e7fa46fe375e925a6ad537be"></a>
25435<h2 class="memtitle"><span class="permalink"><a href="#ac4d30f99e7fa46fe375e925a6ad537be">&#9670;&nbsp;</a></span>Split()</h2>
25436
25437<div class="memitem">
25438<div class="memproto">
25439 <table class="memname">
25440 <tr>
25441 <td class="memname">void Split </td>
25442 <td>(</td>
25443 <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;&#160;</td>
25444 <td class="paramname"><em>data</em></td><td>)</td>
25445 <td></td>
25446 </tr>
25447 </table>
25448</div><div class="memdoc">
25449
25450<p class="definition">Definition at line <a class="el" href="_splitter_8cpp_source.xhtml#l00022">22</a> of file <a class="el" href="_splitter_8cpp_source.xhtml">Splitter.cpp</a>.</p>
25451
25452<p class="reference">References <a class="el" href="classarmnn_1_1_encoder.xhtml#ac729108381e2340bea12877971713ecb">Encoder&lt; IType &gt;::Get()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, and <a class="el" href="_types_8hpp_source.xhtml#l00018">MaxNumOfTensorDimensions</a>.</p>
25453
25454<p class="reference">Referenced by <a class="el" href="_ref_splitter_workload_8cpp_source.xhtml#l00014">RefSplitterWorkload::Execute()</a>, and <a class="el" href="_splitter_8hpp_source.xhtml#l00017">Splitter()</a>.</p>
25455<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; std::unique_ptr&lt;Decoder&lt;float&gt;&gt; decoderPtr =</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; MakeDecoder&lt;float&gt;(inputInfo, data.m_Inputs[0]-&gt;Map());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; Decoder&lt;float&gt;&amp; decoder = *decoderPtr;</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo.GetNumElements(); ++index)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo.GetNumElements();</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo.GetNumDimensions(); i++)</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; dimensionStride /= inputInfo.GetShape()[i];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; indexRemainder -= indices[i] * dimensionStride;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</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"> 46</span>&#160; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo.GetNumDimensions());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</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; insideView = <span class="keyword">false</span>;</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; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</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; insideView = <span class="keyword">false</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; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (insideView)</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; std::unique_ptr&lt;Encoder&lt;float&gt;&gt; encoderPtr =</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; MakeEncoder&lt;float&gt;(outputInfo, data.m_Outputs[viewIdx]-&gt;Map());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; Encoder&lt;float&gt;&amp; encoder = *encoderPtr;</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"> 72</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">float</span> inputValue = 0.f;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</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;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; decoder += index;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; inputValue = decoder.Get();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; decoder -= index;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; encoder += outIndex;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; encoder.Set(inputValue);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</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"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
25456<div class="ttc" id="namespacearmnn_xhtml_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00018">Types.hpp:18</a></div></div>
25457</div><!-- fragment -->
25458</div>
25459</div>
25460<a id="a427c3d26d05b518b1ace407035f5920e"></a>
25461<h2 class="memtitle"><span class="permalink"><a href="#a427c3d26d05b518b1ace407035f5920e">&#9670;&nbsp;</a></span>Splitter()</h2>
25462
25463<div class="memitem">
25464<div class="memproto">
25465 <table class="memname">
25466 <tr>
25467 <td class="memname">void armnn::Splitter </td>
25468 <td>(</td>
25469 <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;&#160;</td>
25470 <td class="paramname"><em>data</em></td><td>)</td>
25471 <td></td>
25472 </tr>
25473 </table>
25474</div><div class="memdoc">
25475
25476<p class="definition">Definition at line <a class="el" href="_splitter_8hpp_source.xhtml#l00017">17</a> of file <a class="el" href="_splitter_8hpp_source.xhtml">Splitter.hpp</a>.</p>
25477
25478<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00093">TensorInfo::GetNumElements()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00091">SplitterQueueDescriptor::ViewOrigin::m_Origin</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00096">SplitterQueueDescriptor::m_ViewOrigins</a>, <a class="el" href="_types_8hpp_source.xhtml#l00018">MaxNumOfTensorDimensions</a>, and <a class="el" href="_splitter_8cpp_source.xhtml#l00022">Split()</a>.</p>
25479
25480<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02273">BOOST_AUTO_TEST_CASE()</a>.</p>
25481<div class="fragment"><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">const</span> TensorInfo&amp; inputInfo0 = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index &lt; inputInfo0.GetNumElements(); ++index)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indices[<a class="code" href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">MaxNumOfTensorDimensions</a>] = { 0 };</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indexRemainder = index;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = inputInfo0.GetNumElements();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;inputInfo0.GetNumDimensions(); i++)</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; dimensionStride /= inputInfo0.GetShape()[i];</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; indices[i] = indexRemainder / dimensionStride; <span class="comment">// Use integer division to round down.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; indexRemainder -= indices[i] * dimensionStride;</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;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> viewIdx = 0; viewIdx &lt; data.m_ViewOrigins.size(); ++viewIdx)</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; SplitterQueueDescriptor::ViewOrigin <span class="keyword">const</span>&amp; view = data.m_ViewOrigins[viewIdx];</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; <span class="comment">//Split view extents are defined by the size of (the corresponding) input tensor.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[viewIdx]);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; BOOST_ASSERT(outputInfo.GetNumDimensions() == inputInfo0.GetNumDimensions());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// Check all dimensions to see if this element is inside the given input view.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> insideView = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i&lt;outputInfo.GetNumDimensions(); i++)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (indices[i] &lt; view.m_Origin[i])</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (indices[i] &gt;= view.m_Origin[i] + outputInfo.GetShape()[i])</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; insideView = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (insideView)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outIndex = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dimensionStride = 1;</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = outputInfo.GetNumDimensions(); i-- &gt; 0;)</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; outIndex += dimensionStride * (indices[i] - view.m_Origin[i]);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; dimensionStride *= outputInfo.GetShape()[i];</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; <span class="comment">//We are within the view, to copy input data to the output corresponding to this view.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* outputData = GetOutputTensorData&lt;DataType&gt;(viewIdx, data);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BOOST_ASSERT(outputData);</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"> 72</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* inputData = GetInputTensorData&lt;DataType&gt;(0, data);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; BOOST_ASSERT(inputData);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; outputData[outIndex] = inputData[index];</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; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a></div><div class="ttdeci">DataType</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00032">Types.hpp:32</a></div></div>
25482<div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
25483<div class="ttc" id="namespacearmnn_xhtml_abdcd184ed3bd648bb31d385040cafd5d"><div class="ttname"><a href="namespacearmnn.xhtml#abdcd184ed3bd648bb31d385040cafd5d">armnn::MaxNumOfTensorDimensions</a></div><div class="ttdeci">constexpr unsigned int MaxNumOfTensorDimensions</div><div class="ttdef"><b>Definition:</b> <a href="_types_8hpp_source.xhtml#l00018">Types.hpp:18</a></div></div>
25484</div><!-- fragment -->
25485</div>
25486</div>
25487<a id="a6ef2dcac2ec0683d52df1b051404e7d6"></a>
25488<h2 class="memtitle"><span class="permalink"><a href="#a6ef2dcac2ec0683d52df1b051404e7d6">&#9670;&nbsp;</a></span>Stack()</h2>
25489
25490<div class="memitem">
25491<div class="memproto">
25492 <table class="memname">
25493 <tr>
25494 <td class="memname">void Stack </td>
25495 <td>(</td>
25496 <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.xhtml">StackQueueDescriptor</a> &amp;&#160;</td>
25497 <td class="paramname"><em>data</em>, </td>
25498 </tr>
25499 <tr>
25500 <td class="paramkey"></td>
25501 <td></td>
25502 <td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt;&gt;&gt; &amp;&#160;</td>
25503 <td class="paramname"><em>inputs</em>, </td>
25504 </tr>
25505 <tr>
25506 <td class="paramkey"></td>
25507 <td></td>
25508 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
25509 <td class="paramname"><em>output</em>&#160;</td>
25510 </tr>
25511 <tr>
25512 <td></td>
25513 <td>)</td>
25514 <td></td><td></td>
25515 </tr>
25516 </table>
25517</div><div class="memdoc">
25518
25519<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.xhtml#l00012">12</a> of file <a class="el" href="backends_2reference_2workloads_2_stack_8cpp_source.xhtml">Stack.cpp</a>.</p>
25520
25521<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00092">TensorInfo::GetNumDimensions()</a>, <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, <a class="el" href="_ref_workload_utils_8hpp_source.xhtml#l00025">GetTensorInfo()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00972">StackDescriptor::m_Axis</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00030">QueueDescriptor::m_Inputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00031">QueueDescriptor::m_Outputs</a>, <a class="el" href="_workload_data_8hpp_source.xhtml#l00049">QueueDescriptorWithParameters&lt; LayerDescriptor &gt;::m_Parameters</a>, and <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>.</p>
25522
25523<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02328">BOOST_AUTO_TEST_CASE()</a>.</p>
25524<div class="fragment"><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keyword">const</span> TensorInfo&amp; outputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Outputs[0]);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">const</span> TensorInfo&amp; inputInfo = <a class="code" href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">GetTensorInfo</a>(data.m_Inputs[0]);</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputNumDims = outputInfo.GetNumDimensions();</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputNumDims = inputInfo.GetNumDimensions();</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="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a>&amp; outputDims = outputInfo.GetShape();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a>&amp; inputDims = inputInfo.GetShape();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> axis = data.m_Parameters.m_Axis;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="comment">// Initialise output data</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numOutputElements = 1;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;outputNumDims; ++i)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; numOutputElements *= outputDims[i];</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iNumTensors = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">&gt;</span>(data.m_Inputs.size());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iBatchSize = inputDims[0];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iChannels = (inputNumDims &gt; 1) ? inputDims[1] : 1;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iHeight = (inputNumDims &gt; 2) ? inputDims[2] : 1;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iWidth = (inputNumDims &gt; 3) ? inputDims[3] : 1;</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="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oBatchSize = outputDims[1];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oChannels = (outputNumDims &gt; 2) ? outputDims[2] : 1;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oHeight = (outputNumDims &gt; 3) ? outputDims[3] : 1;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> oWidth = (outputNumDims &gt; 4) ? outputDims[4] : 1;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Array to store the input coordinates</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// iCoordinates[0] = i, iCoordinates[1] = bi, iCoordinates[2] = ci</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// iCoordinates[3] = hi, iCoordinates[4] = wi, iCoordinates[5] = 0</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="comment">// iCoordinates[5] will be always zero and used for not incrementing</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// the output when the input has less than 4 dimensions</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::array&lt;unsigned int, 6&gt; iCoordinates{ 0 };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Array of pointers used to map the output coordinates to the input ones, in accordance with the axis</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// This array is initialized with &amp;iCoordinates[5] since this will be always zero</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; std::array&lt;unsigned int *, 5&gt; oCoordinates = { &amp;iCoordinates[5],</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; &amp;iCoordinates[5],</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; &amp;iCoordinates[5] };</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; <span class="comment">// Set the axis coordinate</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; oCoordinates[axis] = &amp;iCoordinates[0];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// Map the output coordinates, accounting for the axis</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim_shift = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dim = 0; dim &lt; inputNumDims; ++dim)</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; <span class="keywordflow">if</span>(dim == axis)</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; dim_shift++;</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; oCoordinates[dim + dim_shift] = &amp;iCoordinates[dim + 1];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Alias for the input coordinates</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;i = iCoordinates[0];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bi = iCoordinates[1];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ci = iCoordinates[2];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;hi = iCoordinates[3];</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wi = iCoordinates[4];</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; <span class="comment">// Alias for the output coordinates</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;o = *(oCoordinates[0]);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;bo = *(oCoordinates[1]);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;co = *(oCoordinates[2]);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;ho = *(oCoordinates[3]);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> &amp;wo = *(oCoordinates[4]);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="comment">// Stack tensors</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span>(; i &lt; iNumTensors; ++(i))</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span>(bi = 0; bi &lt; iBatchSize; ++(bi))</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span>(ci = 0; ci &lt; iChannels; ++(ci))</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; <span class="keywordflow">for</span>(hi = 0; hi &lt; iHeight; ++(hi))</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span>(wi = 0; wi &lt; iWidth; ++(wi))</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; output[o * oWidth * oHeight * oChannels * oBatchSize +</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; bo * oWidth * oHeight * oChannels +</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; co * oWidth * oHeight +</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; ho * oWidth +</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; wo];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; output.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(inputs[i]-&gt;Get());</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; ++(*(inputs[i]));</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; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
25525<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>
25526<div class="ttc" id="namespacearmnn_utils_xhtml_acee63cd08da47910fc166a1990988fa8"><div class="ttname"><a href="namespacearmnn_utils.xhtml#acee63cd08da47910fc166a1990988fa8">armnnUtils::GetTensorInfo</a></div><div class="ttdeci">armnn::TensorInfo GetTensorInfo(unsigned int numberOfBatches, unsigned int numberOfChannels, unsigned int height, unsigned int width, const armnn::DataLayout dataLayout, const armnn::DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_utils_8cpp_source.xhtml#l00038">TensorUtils.cpp:38</a></div></div>
25527</div><!-- fragment -->
25528</div>
25529</div>
25530<a id="a637fea04314a9870c1dc4355c1bed429"></a>
25531<h2 class="memtitle"><span class="permalink"><a href="#a637fea04314a9870c1dc4355c1bed429">&#9670;&nbsp;</a></span>StrEqual()</h2>
25532
25533<div class="memitem">
25534<div class="memproto">
25535 <table class="memname">
25536 <tr>
25537 <td class="memname">constexpr bool armnn::StrEqual </td>
25538 <td>(</td>
25539 <td class="paramtype">const char *&#160;</td>
25540 <td class="paramname"><em>strA</em>, </td>
25541 </tr>
25542 <tr>
25543 <td class="paramkey"></td>
25544 <td></td>
25545 <td class="paramtype">const char(&amp;)&#160;</td>
25546 <td class="paramname"><em>strB</em>[N]&#160;</td>
25547 </tr>
25548 <tr>
25549 <td></td>
25550 <td>)</td>
25551 <td></td><td></td>
25552 </tr>
25553 </table>
25554</div><div class="memdoc">
25555
25556<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00136">136</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
25557
25558<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.xhtml#l00148">ParseComputeDevice()</a>.</p>
25559<div class="fragment"><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">bool</span> isEqual = <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; isEqual &amp;&amp; (i &lt; N); ++i)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; isEqual = (strA[i] == strB[i]);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> isEqual;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;}</div></div><!-- fragment -->
25560</div>
25561</div>
25562<a id="a86d7a7168ac00b75b4971f9aad623698"></a>
25563<h2 class="memtitle"><span class="permalink"><a href="#a86d7a7168ac00b75b4971f9aad623698">&#9670;&nbsp;</a></span>StridedSlice()</h2>
25564
25565<div class="memitem">
25566<div class="memproto">
25567 <table class="memname">
25568 <tr>
25569 <td class="memname">void StridedSlice </td>
25570 <td>(</td>
25571 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
25572 <td class="paramname"><em>inputInfo</em>, </td>
25573 </tr>
25574 <tr>
25575 <td class="paramkey"></td>
25576 <td></td>
25577 <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
25578 <td class="paramname"><em>params</em>, </td>
25579 </tr>
25580 <tr>
25581 <td class="paramkey"></td>
25582 <td></td>
25583 <td class="paramtype">const void *&#160;</td>
25584 <td class="paramname"><em>inputData</em>, </td>
25585 </tr>
25586 <tr>
25587 <td class="paramkey"></td>
25588 <td></td>
25589 <td class="paramtype">void *&#160;</td>
25590 <td class="paramname"><em>outputData</em>, </td>
25591 </tr>
25592 <tr>
25593 <td class="paramkey"></td>
25594 <td></td>
25595 <td class="paramtype">unsigned int&#160;</td>
25596 <td class="paramname"><em>dataTypeSize</em>&#160;</td>
25597 </tr>
25598 <tr>
25599 <td></td>
25600 <td>)</td>
25601 <td></td><td></td>
25602 </tr>
25603 </table>
25604</div><div class="memdoc">
25605
25606<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.xhtml#l00090">90</a> of file <a class="el" href="backends_2reference_2workloads_2_strided_slice_8cpp_source.xhtml">StridedSlice.cpp</a>.</p>
25607
25608<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>, and <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
25609
25610<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02395">BOOST_AUTO_TEST_CASE()</a>.</p>
25611<div class="fragment"><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* input = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(inputData);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* output = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(outputData);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> TensorShape inputShape = ExtendShape(inputInfo.GetShape(), 4);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; StridedSliceDescriptor paddedParams = params;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Pad parameters to 4 dimensions</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; PadParams(paddedParams, 4);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start0 = paddedParams.GetStartForAxis(inputShape, 0);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop0 = paddedParams.GetStopForAxis (inputShape, 0, start0);</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; <span class="keyword">const</span> <span class="keywordtype">int</span> start1 = paddedParams.GetStartForAxis(inputShape, 1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop1 = paddedParams.GetStopForAxis (inputShape, 1, start1);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start2 = paddedParams.GetStartForAxis(inputShape, 2);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop2 = paddedParams.GetStopForAxis (inputShape, 2, start2);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> start3 = paddedParams.GetStartForAxis(inputShape, 3);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> stop3 = paddedParams.GetStopForAxis (inputShape, 3, start3);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> step = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(dataTypeSize);</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; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in0 = start0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; !LoopCondition(in0, stop0, paddedParams.m_Stride[0]);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; in0 += paddedParams.m_Stride[0])</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in1 = start1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; !LoopCondition(in1, stop1, paddedParams.m_Stride[1]);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; in1 += paddedParams.m_Stride[1])</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in2 = start2;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; !LoopCondition(in2, stop2, paddedParams.m_Stride[2]);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; in2 += paddedParams.m_Stride[2])</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> in3 = start3;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; !LoopCondition(in3, stop3, paddedParams.m_Stride[3]);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; in3 += paddedParams.m_Stride[3])</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> dim1 = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(inputShape[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">int</span> dim2 = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(inputShape[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">int</span> dim3 = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;<span class="keywordtype">int</span>&gt;(inputShape[3]);</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; <span class="keywordtype">int</span> inputOffset = (((in0 * dim1 + in1) * dim2 + in2) * dim3 + in3) * step;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; ::memcpy(output, input + inputOffset, dataTypeSize);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; output += step;</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; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
25612</div><!-- fragment -->
25613</div>
25614</div>
25615<a id="a14d7f180bf51e86850305965c3707e07"></a>
25616<h2 class="memtitle"><span class="permalink"><a href="#a14d7f180bf51e86850305965c3707e07">&#9670;&nbsp;</a></span>swap() <span class="overload">[1/2]</span></h2>
25617
25618<div class="memitem">
25619<div class="memproto">
25620 <table class="memname">
25621 <tr>
25622 <td class="memname">void armnn::swap </td>
25623 <td>(</td>
25624 <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
25625 <td class="paramname"><em>first</em>, </td>
25626 </tr>
25627 <tr>
25628 <td class="paramkey"></td>
25629 <td></td>
25630 <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
25631 <td class="paramname"><em>second</em>&#160;</td>
25632 </tr>
25633 <tr>
25634 <td></td>
25635 <td>)</td>
25636 <td></td><td></td>
25637 </tr>
25638 </table>
25639</div><div class="memdoc">
25640
25641<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.xhtml#l00342">342</a> of file <a class="el" href="_descriptors_8cpp_source.xhtml">Descriptors.cpp</a>.</p>
25642
25643<p class="reference">References <a class="el" href="_descriptors_8cpp_source.xhtml#l00351">ViewsDescriptor::swap</a>, and <a class="el" href="_descriptors_8cpp_source.xhtml#l00351">swap()</a>.</p>
25644
25645<p class="reference">Referenced by <a class="el" href="_fully_connected_test_impl_8cpp_source.xhtml#l00247">FullyConnectedFloat32Test()</a>, <a class="el" href="_fully_connected_test_impl_8cpp_source.xhtml#l00148">FullyConnectedLargeTestCommon()</a>, <a class="el" href="_backend_id_8hpp_source.xhtml#l00102">BackendId::operator=()</a>, <a class="el" href="_squash_equal_siblings_8hpp_source.xhtml#l00024">SquashEqualSiblingsImpl&lt; Comparable &gt;::Run()</a>, and <a class="el" href="_backend_registry_8cpp_source.xhtml#l00093">BackendRegistry::Swap()</a>.</p>
25646<div class="fragment"><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;{</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumViews, second.m_NumViews);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_NumDimensions, second.m_NumDimensions);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewOrigins, second.m_ViewOrigins);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ConcatAxis, second.m_ConcatAxis);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00351">Descriptors.cpp:351</a></div></div>
25647</div><!-- fragment -->
25648</div>
25649</div>
25650<a id="a686b8288a04b3ffff67d560eea53f6be"></a>
25651<h2 class="memtitle"><span class="permalink"><a href="#a686b8288a04b3ffff67d560eea53f6be">&#9670;&nbsp;</a></span>swap() <span class="overload">[2/2]</span></h2>
25652
25653<div class="memitem">
25654<div class="memproto">
25655 <table class="memname">
25656 <tr>
25657 <td class="memname">void armnn::swap </td>
25658 <td>(</td>
25659 <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
25660 <td class="paramname"><em>first</em>, </td>
25661 </tr>
25662 <tr>
25663 <td class="paramkey"></td>
25664 <td></td>
25665 <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
25666 <td class="paramname"><em>second</em>&#160;</td>
25667 </tr>
25668 <tr>
25669 <td></td>
25670 <td>)</td>
25671 <td></td><td></td>
25672 </tr>
25673 </table>
25674</div><div class="memdoc">
25675
25676<p class="definition">Definition at line <a class="el" href="_descriptors_8cpp_source.xhtml#l00351">351</a> of file <a class="el" href="_descriptors_8cpp_source.xhtml">Descriptors.cpp</a>.</p>
25677
25678<p class="reference">References <a class="el" href="_descriptors_8cpp_source.xhtml#l00351">ViewsDescriptor::swap</a>.</p>
25679
25680<p class="reference">Referenced by <a class="el" href="_descriptors_8cpp_source.xhtml#l00342">swap()</a>.</p>
25681<div class="fragment"><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keyword">using</span> <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">std::swap</a>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_Origins, second.m_Origins);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">swap</a>(first.m_ViewSizes, second.m_ViewSizes);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a686b8288a04b3ffff67d560eea53f6be"><div class="ttname"><a href="namespacearmnn.xhtml#a686b8288a04b3ffff67d560eea53f6be">armnn::swap</a></div><div class="ttdeci">void swap(ViewsDescriptor &amp;first, ViewsDescriptor &amp;second)</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8cpp_source.xhtml#l00351">Descriptors.cpp:351</a></div></div>
25682</div><!-- fragment -->
25683</div>
25684</div>
25685<a id="a14cfd39cfc30682fa821ade3dd298426"></a>
25686<h2 class="memtitle"><span class="permalink"><a href="#a14cfd39cfc30682fa821ade3dd298426">&#9670;&nbsp;</a></span>TestQuantizeConvolution2d()</h2>
25687
25688<div class="memitem">
25689<div class="memproto">
25690 <table class="memname">
25691 <tr>
25692 <td class="memname">void armnn::TestQuantizeConvolution2d </td>
25693 <td>(</td>
25694 <td class="paramtype">bool&#160;</td>
25695 <td class="paramname"><em>useBiases</em></td><td>)</td>
25696 <td></td>
25697 </tr>
25698 </table>
25699</div><div class="memdoc">
25700
25701<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">1155</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
25702
25703<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00438">Convolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
25704
25705<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01231">BOOST_AUTO_TEST_CASE()</a>.</p>
25706<div class="fragment"><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;{</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keyword">class </span>TestConv2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; TestConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; : TestQuantization(inputShape, outputShape) {}</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; TestConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordtype">void</span> VisitConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keyword">const</span> Convolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(convolution2dDescriptor, name);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</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; };</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; Convolution2dDescriptor descriptor;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; IConnectableLayer* conv2d;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">if</span> (useBiases)</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; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</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; conv2d = network-&gt;AddConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</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">// Establish connections</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; input0-&gt;GetOutputSlot(0).Connect(conv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; conv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="comment">// Set TensorInfo</span></div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; conv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; TestConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; TestConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; TestConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; TestConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;}</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>
25707<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
25708<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
25709<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
25710<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
25711</div><!-- fragment -->
25712</div>
25713</div>
25714<a id="a5abbe8a9ee003c1379a921dbe2745b81"></a>
25715<h2 class="memtitle"><span class="permalink"><a href="#a5abbe8a9ee003c1379a921dbe2745b81">&#9670;&nbsp;</a></span>TestQuantizeDepthwiseConvolution2d()</h2>
25716
25717<div class="memitem">
25718<div class="memproto">
25719 <table class="memname">
25720 <tr>
25721 <td class="memname">void armnn::TestQuantizeDepthwiseConvolution2d </td>
25722 <td>(</td>
25723 <td class="paramtype">bool&#160;</td>
25724 <td class="paramname"><em>useBiases</em></td><td>)</td>
25725 <td></td>
25726 </tr>
25727 </table>
25728</div><div class="memdoc">
25729
25730<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">1241</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
25731
25732<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l00490">DepthwiseConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
25733
25734<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01317">BOOST_AUTO_TEST_CASE()</a>.</p>
25735<div class="fragment"><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;{</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keyword">class </span>TestDepthwiseConv2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; {</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; TestDepthwiseConv2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordtype">void</span> VisitDepthwiseConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keyword">const</span> DepthwiseConvolution2dDescriptor&amp; convolution2dDescriptor,</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(convolution2dDescriptor, name);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; };</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; TensorShape shape{3U};</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; std::vector&lt;float&gt; weightsData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; DepthwiseConvolution2dDescriptor descriptor;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="comment">// Add the layers</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; IConnectableLayer* input0 = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; IConnectableLayer* depthwiseConv2d;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; std::vector&lt;float&gt; biasesData{-1.0f, 1.5f, 2.0f};</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">if</span> (useBiases)</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; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</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; depthwiseConv2d = network-&gt;AddDepthwiseConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</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">// Establish connections</span></div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; input0-&gt;GetOutputSlot(0).Connect(depthwiseConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="comment">//Set TensorInfo</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; input0-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; depthwiseConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; TestDepthwiseConv2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; TestDepthwiseConv2dQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;}</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>
25736<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
25737<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
25738<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
25739<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
25740</div><!-- fragment -->
25741</div>
25742</div>
25743<a id="afa7a0a639e2772ff2ced67d77be810c0"></a>
25744<h2 class="memtitle"><span class="permalink"><a href="#afa7a0a639e2772ff2ced67d77be810c0">&#9670;&nbsp;</a></span>TestQuantizeTransposeConvolution2d()</h2>
25745
25746<div class="memitem">
25747<div class="memproto">
25748 <table class="memname">
25749 <tr>
25750 <td class="memname">void armnn::TestQuantizeTransposeConvolution2d </td>
25751 <td>(</td>
25752 <td class="paramtype">bool&#160;</td>
25753 <td class="paramname"><em>useBiases</em></td><td>)</td>
25754 <td></td>
25755 </tr>
25756 </table>
25757</div><div class="memdoc">
25758
25759<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">2597</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
25760
25761<p class="reference">References <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#ac1835f8756a9f03c02fcf9664e3a0fce">IOutputSlot::Connect()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_network_8cpp_source.xhtml#l00049">INetwork::Create()</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a6ec9e0eb66d7d6a01240492a0b18104c">IConnectableLayer::GetInputSlot()</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a5ee4a6c9a2481245487b1b1a70d20fd0">IOutputSlot::SetTensorInfo()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
25762
25763<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02677">BOOST_AUTO_TEST_CASE()</a>.</p>
25764<div class="fragment"><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;{</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; <span class="keyword">class </span>TestTransposeConvolution2dQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; {</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; TestQuantization(inputShape, outputShape)</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; {}</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; TestTransposeConvolution2dQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape) :</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; TestQuantization(options, inputShape, outputShape)</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; {}</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; <span class="keywordtype">void</span> VisitTransposeConvolution2dLayer(<span class="keyword">const</span> IConnectableLayer *layer,</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; <span class="keyword">const</span> TransposeConvolution2dDescriptor&amp; descriptor,</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(descriptor, name);</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; }</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;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = INetwork::Create();</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; TensorShape shape{ 3 };</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160; TensorInfo <a class="code" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>(shape, DataType::Float32);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; std::initializer_list&lt;float&gt; floatData{ -1.0f, 1.5f, 2.0f };</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160; std::vector&lt;float&gt; weightsData(floatData);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; ConstTensor weights(info, weightsData);</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160;</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; TransposeConvolution2dDescriptor descriptor;</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; descriptor.m_BiasEnabled = useBiases;</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; <span class="comment">// construct network</span></div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; IConnectableLayer* input = network-&gt;AddInputLayer(0);</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160; Optional&lt;ConstTensor&gt; optionalBiases;</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; std::vector&lt;float&gt; biasesData(floatData);</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <span class="keywordflow">if</span> (useBiases)</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160; {</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; ConstTensor biases(info, biasesData);</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; optionalBiases = Optional&lt;ConstTensor&gt;(biases);</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; }</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; IConnectableLayer* transposeConv2d = network-&gt;AddTransposeConvolution2dLayer(descriptor, weights, optionalBiases);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; IConnectableLayer* output = network-&gt;AddOutputLayer(1);</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; input-&gt;GetOutputSlot(0).Connect(transposeConv2d-&gt;GetInputSlot(0));</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).Connect(output-&gt;GetInputSlot(0));</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160;</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160; input-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; transposeConv2d-&gt;GetOutputSlot(0).SetTensorInfo(info);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160;</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; <span class="comment">// test QAsymmU8 quantization</span></div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</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; <span class="comment">//test QAsymmS8 quantization</span></div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; TestTransposeConvolution2dQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160;</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; <span class="comment">// test QSymmS8 quantization</span></div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</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; <span class="comment">// test QSymmS16 quantization</span></div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keyword">const</span> QuantizerOptions qSymmS16options(DataType::QSymmS16);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), qSymmS16options)-&gt;ExportNetwork();</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; TestTransposeConvolution2dQuantization validatorQSymmS16(qSymmS16options, shape, shape);</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160;}</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>
25765<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
25766<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
25767<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
25768<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
25769</div><!-- fragment -->
25770</div>
25771</div>
25772<a id="a2748f45e58b1c612d473043f711d1434"></a>
25773<h2 class="memtitle"><span class="permalink"><a href="#a2748f45e58b1c612d473043f711d1434">&#9670;&nbsp;</a></span>TopKSort()</h2>
25774
25775<div class="memitem">
25776<div class="memproto">
25777 <table class="memname">
25778 <tr>
25779 <td class="memname">void TopKSort </td>
25780 <td>(</td>
25781 <td class="paramtype">unsigned int&#160;</td>
25782 <td class="paramname"><em>k</em>, </td>
25783 </tr>
25784 <tr>
25785 <td class="paramkey"></td>
25786 <td></td>
25787 <td class="paramtype">unsigned int *&#160;</td>
25788 <td class="paramname"><em>indices</em>, </td>
25789 </tr>
25790 <tr>
25791 <td class="paramkey"></td>
25792 <td></td>
25793 <td class="paramtype">const float *&#160;</td>
25794 <td class="paramname"><em>values</em>, </td>
25795 </tr>
25796 <tr>
25797 <td class="paramkey"></td>
25798 <td></td>
25799 <td class="paramtype">unsigned int&#160;</td>
25800 <td class="paramname"><em>numElement</em>&#160;</td>
25801 </tr>
25802 <tr>
25803 <td></td>
25804 <td>)</td>
25805 <td></td><td></td>
25806 </tr>
25807 </table>
25808</div><div class="memdoc">
25809
25810<p class="definition">Definition at line <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00025">25</a> of file <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml">DetectionPostProcess.cpp</a>.</p>
25811
25812<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.xhtml#l00015">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>, and <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00050">NonMaxSuppression()</a>.</p>
25813<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; std::partial_sort(indices, indices + k, indices + numElement,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; [&amp;values](<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> values[i] &gt; values[j]; });</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div></div><!-- fragment -->
25814</div>
25815</div>
25816<a id="affec174d91f234497dfbceba5e251dee"></a>
25817<h2 class="memtitle"><span class="permalink"><a href="#affec174d91f234497dfbceba5e251dee">&#9670;&nbsp;</a></span>TransposeConvolution2dImpl()</h2>
25818
25819<div class="memitem">
25820<div class="memproto">
25821 <table class="memname">
25822 <tr>
25823 <td class="memname">void TransposeConvolution2dImpl </td>
25824 <td>(</td>
25825 <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
25826 <td class="paramname"><em>descriptor</em>, </td>
25827 </tr>
25828 <tr>
25829 <td class="paramkey"></td>
25830 <td></td>
25831 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
25832 <td class="paramname"><em>inputShape</em>, </td>
25833 </tr>
25834 <tr>
25835 <td class="paramkey"></td>
25836 <td></td>
25837 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
25838 <td class="paramname"><em>inputDecoder</em>, </td>
25839 </tr>
25840 <tr>
25841 <td class="paramkey"></td>
25842 <td></td>
25843 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
25844 <td class="paramname"><em>outputShape</em>, </td>
25845 </tr>
25846 <tr>
25847 <td class="paramkey"></td>
25848 <td></td>
25849 <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
25850 <td class="paramname"><em>outputEncoder</em>, </td>
25851 </tr>
25852 <tr>
25853 <td class="paramkey"></td>
25854 <td></td>
25855 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
25856 <td class="paramname"><em>weightsShape</em>, </td>
25857 </tr>
25858 <tr>
25859 <td class="paramkey"></td>
25860 <td></td>
25861 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
25862 <td class="paramname"><em>weightsDecoder</em>, </td>
25863 </tr>
25864 <tr>
25865 <td class="paramkey"></td>
25866 <td></td>
25867 <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *&#160;</td>
25868 <td class="paramname"><em>biasesDecoder</em>&#160;</td>
25869 </tr>
25870 <tr>
25871 <td></td>
25872 <td>)</td>
25873 <td></td><td></td>
25874 </tr>
25875 </table>
25876</div><div class="memdoc">
25877
25878<p class="definition">Definition at line <a class="el" href="_transpose_convolution2d_8cpp_source.xhtml#l00015">15</a> of file <a class="el" href="_transpose_convolution2d_8cpp_source.xhtml">TransposeConvolution2d.cpp</a>.</p>
25879
25880<p class="reference">References <a class="el" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Decoder&lt; IType &gt;::Get()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00023">DataLayoutIndexed::GetChannelsIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00024">DataLayoutIndexed::GetHeightIndex()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00027">DataLayoutIndexed::GetIndex()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00106">TensorShape::GetNumElements()</a>, <a class="el" href="_data_layout_indexed_8hpp_source.xhtml#l00025">DataLayoutIndexed::GetWidthIndex()</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01117">TransposeConvolution2dDescriptor::m_BiasEnabled</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01119">TransposeConvolution2dDescriptor::m_DataLayout</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01105">TransposeConvolution2dDescriptor::m_PadLeft</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01109">TransposeConvolution2dDescriptor::m_PadTop</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01113">TransposeConvolution2dDescriptor::m_StrideX</a>, <a class="el" href="_descriptors_8hpp_source.xhtml#l01115">TransposeConvolution2dDescriptor::m_StrideY</a>, <a class="el" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Encoder&lt; IType &gt;::Set()</a>, and <a class="el" href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">BaseIterator::SetIndex()</a>.</p>
25881
25882<p class="reference">Referenced by <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.xhtml#l00053">RefTransposeConvolution2dWorkload::Execute()</a>.</p>
25883<div class="fragment"><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled &amp;&amp; !biasesDecoder)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">throw</span> InvalidArgumentException(<span class="stringliteral">&quot;Biases enabled but no bias data provided&quot;</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <a class="code" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> dataLayoutIndexed(descriptor.m_DataLayout);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelsIndex = dataLayoutIndexed.GetChannelsIndex();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> heightIndex = dataLayoutIndexed.GetHeightIndex();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> widthIndex = dataLayoutIndexed.GetWidthIndex();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> numBatches = inputShape[0];</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputWidth = inputShape[widthIndex];</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputHeight = inputShape[heightIndex];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputDepth = inputShape[channelsIndex];</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsHeight = weightsShape[heightIndex];</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsWidth = weightsShape[widthIndex];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputHeight = outputShape[heightIndex];</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputWidth = outputShape[widthIndex];</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputDepth = outputShape[channelsIndex];</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"> 46</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingLeft = descriptor.m_PadLeft;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> paddingTop = descriptor.m_PadTop;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideX = descriptor.m_StrideX;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> strideY = descriptor.m_StrideY;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::vector&lt;float&gt; outputBuffer(outputShape.GetNumElements(), 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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yInput = 0u; yInput &lt; inputHeight; ++yInput)</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">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xInput = 0u; xInput &lt; inputWidth; ++xInput)</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; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutputOrigin = xInput * strideX - paddingLeft;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutputOrigin = yInput * strideY - paddingTop;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yWeights = 0u; yWeights &lt; weightsHeight; ++yWeights)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xWeights = 0u; xWeights &lt; weightsWidth; ++xWeights)</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="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = yOutputOrigin + yWeights;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = xOutputOrigin + xWeights;</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"> 72</span>&#160; <span class="keywordflow">if</span> (yOutput &lt; outputHeight &amp;&amp; xOutput&lt; outputWidth)</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="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dInput = 0u; dInput &lt; inputDepth; dInput++)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> inputIndex =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; dataLayoutIndexed.GetIndex(inputShape, batch, dInput, yInput, xInput);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; inputDecoder[inputIndex];</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; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> weightsIndex =</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; dataLayoutIndexed.GetIndex(weightsShape, dOutput, dInput, yWeights, xWeights);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; weightsDecoder.<a class="code" href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(weightsIndex, dOutput);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; outputEncoder[outputIndex];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">float</span> output = outputBuffer[outputIndex];</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; output += inputDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>() * weightsDecoder.<a class="code" href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">Get</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; outputBuffer[outputIndex] = output;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</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="comment">// Apply bias (if enabled)</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (descriptor.m_BiasEnabled)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; outputEncoder[0];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; Decoder&lt;float&gt;&amp; rBiasesDecoder = *biasesDecoder;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> batch = 0u; batch &lt; numBatches; ++batch)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> dOutput = 0u; dOutput &lt; outputDepth; ++dOutput)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rBiasesDecoder.<a class="code" href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">SetIndex</a>(dOutput, dOutput);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> yOutput = 0u; yOutput &lt; outputHeight; ++yOutput)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> xOutput = 0u; xOutput &lt; outputWidth; ++xOutput)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> outputIndex =</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; dataLayoutIndexed.GetIndex(outputShape, batch, dOutput, yOutput, xOutput);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; outputBuffer[outputIndex] += rBiasesDecoder.Get();</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"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; outputEncoder[0];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">float</span> output : outputBuffer)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; outputEncoder.<a class="code" href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">Set</a>(output);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ++outputEncoder;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div><div class="ttc" id="classarmnn_1_1_encoder_xhtml_ae3b62b846a9c239f332830b9e36030eb"><div class="ttname"><a href="classarmnn_1_1_encoder.xhtml#ae3b62b846a9c239f332830b9e36030eb">armnn::Encoder::Set</a></div><div class="ttdeci">virtual void Set(IType right)=0</div></div>
25884<div class="ttc" id="classarmnn_1_1_decoder_xhtml_ac729108381e2340bea12877971713ecb"><div class="ttname"><a href="classarmnn_1_1_decoder.xhtml#ac729108381e2340bea12877971713ecb">armnn::Decoder::Get</a></div><div class="ttdeci">virtual IType Get() const =0</div></div>
25885<div class="ttc" id="classarmnn_utils_1_1_data_layout_indexed_xhtml"><div class="ttname"><a href="classarmnn_utils_1_1_data_layout_indexed.xhtml">armnnUtils::DataLayoutIndexed</a></div><div class="ttdoc">Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout...</div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8hpp_source.xhtml#l00017">DataLayoutIndexed.hpp:17</a></div></div>
25886<div class="ttc" id="classarmnn_1_1_base_iterator_xhtml_a1ec75b077d774dbfebf3662e8e4363c9"><div class="ttname"><a href="classarmnn_1_1_base_iterator.xhtml#a1ec75b077d774dbfebf3662e8e4363c9">armnn::BaseIterator::SetIndex</a></div><div class="ttdeci">virtual BaseIterator &amp; SetIndex(unsigned int index, unsigned int axisIndex=0)=0</div></div>
25887</div><!-- fragment -->
25888</div>
25889</div>
25890<a id="aeaee60c3c6c67a7cf37bbef45b89fc0a"></a>
25891<h2 class="memtitle"><span class="permalink"><a href="#aeaee60c3c6c67a7cf37bbef45b89fc0a">&#9670;&nbsp;</a></span>TrueFunc()</h2>
25892
25893<div class="memitem">
25894<div class="memproto">
25895 <table class="memname">
25896 <tr>
25897 <td class="memname">bool armnn::TrueFunc </td>
25898 <td>(</td>
25899 <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
25900 <td class="paramname"><em>reasonIfUnsupported</em>, </td>
25901 </tr>
25902 <tr>
25903 <td class="paramkey"></td>
25904 <td></td>
25905 <td class="paramtype">Params &amp;&amp;...&#160;</td>
25906 <td class="paramname"><em>params</em>&#160;</td>
25907 </tr>
25908 <tr>
25909 <td></td>
25910 <td>)</td>
25911 <td></td><td></td>
25912 </tr>
25913 </table>
25914</div><div class="memdoc">
25915
25916<p class="definition">Definition at line <a class="el" href="_layer_support_common_8hpp_source.xhtml#l00054">54</a> of file <a class="el" href="_layer_support_common_8hpp_source.xhtml">LayerSupportCommon.hpp</a>.</p>
25917
25918<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>.</p>
25919<div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(reasonIfUnsupported);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(params...);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</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>
25920</div><!-- fragment -->
25921</div>
25922</div>
25923<a id="a245661fc96c9c4a9b898e1d98c8c6962"></a>
25924<h2 class="memtitle"><span class="permalink"><a href="#a245661fc96c9c4a9b898e1d98c8c6962">&#9670;&nbsp;</a></span>ValidateFullyConnectedLayer()</h2>
25925
25926<div class="memitem">
25927<div class="memproto">
25928 <table class="memname">
25929 <tr>
25930 <td class="memname">void armnn::ValidateFullyConnectedLayer </td>
25931 <td>(</td>
25932 <td class="paramtype">const bool&#160;</td>
25933 <td class="paramname"><em>biasEnabled</em></td><td>)</td>
25934 <td></td>
25935 </tr>
25936 </table>
25937</div><div class="memdoc">
25938
25939<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">1098</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
25940
25941<p class="reference">References <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00040">INetworkQuantizer::Create()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01060">CreateNetworkWithFullyConnectedLayer()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>, <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
25942
25943<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01145">BOOST_AUTO_TEST_CASE()</a>.</p>
25944<div class="fragment"><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;{</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keyword">class </span>TestFullyConnectedQuantization : <span class="keyword">public</span> TestQuantization</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> TensorShape&amp; inputShape, <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; : TestQuantization(inputShape, outputShape) {}</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; TestFullyConnectedQuantization(<span class="keyword">const</span> QuantizerOptions&amp; <a class="code" href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a>,</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keyword">const</span> TensorShape&amp; inputShape,</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keyword">const</span> TensorShape&amp; outputShape)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; : TestQuantization(options, inputShape, outputShape) {}</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="keywordtype">void</span> VisitFullyConnectedLayer(<span class="keyword">const</span> IConnectableLayer* layer,</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keyword">const</span> FullyConnectedDescriptor&amp; desc,</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keyword">const</span> ConstTensor&amp; weights,</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keyword">const</span> Optional&lt;ConstTensor&gt;&amp; biases,</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* name = <span class="keyword">nullptr</span>)<span class="keyword"> override</span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <a class="code" href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">IgnoreUnused</a>(desc, name);</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; TestQuantizationOnLayersWithBiases(layer, weights, biases);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; };</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="keyword">const</span> TensorShape shape{3U};</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> network = <a class="code" href="namespacearmnn.xhtml#aad4b8cb9a4d882a48bc21510f0d1a938">CreateNetworkWithFullyConnectedLayer</a>(biasEnabled, shape, shape);</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; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmU8 = INetworkQuantizer::Create(network.get())-&gt;ExportNetwork();</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; TestFullyConnectedQuantization validatorQAsymmU8(shape, shape);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmU8.get(), validatorQAsymmU8);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keyword">const</span> QuantizerOptions qAsymmS8Options(DataType::QAsymmS8);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQAsymmS8 = INetworkQuantizer::Create(network.get(), qAsymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; TestFullyConnectedQuantization validatorQAsymmS8(qAsymmS8Options, shape, shape);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQAsymmS8.get(), validatorQAsymmS8);</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="keyword">const</span> QuantizerOptions qSymmS8Options(DataType::QSymmS8);</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS8 = INetworkQuantizer::Create(network.get(), qSymmS8Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; TestFullyConnectedQuantization validatorQSymmS8(qSymmS8Options, shape, shape);</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS8.get(), validatorQSymmS8);</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keyword">const</span> QuantizerOptions Qsymm16Options(DataType::QSymmS16);</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <a class="code" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> quantizedNetworkQSymmS16 = INetworkQuantizer::Create(network.get(), Qsymm16Options)-&gt;ExportNetwork();</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; TestFullyConnectedQuantization validatorQSymmS16(Qsymm16Options, shape, shape);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <a class="code" href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">VisitLayersTopologically</a>(quantizedNetworkQSymmS16.get(), validatorQSymmS16);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;}</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>
25945<div class="ttc" id="namespacearmnn_xhtml_aad4b8cb9a4d882a48bc21510f0d1a938"><div class="ttname"><a href="namespacearmnn.xhtml#aad4b8cb9a4d882a48bc21510f0d1a938">armnn::CreateNetworkWithFullyConnectedLayer</a></div><div class="ttdeci">INetworkPtr CreateNetworkWithFullyConnectedLayer(const bool biasEnabled, const TensorShape &amp;inputShape, const TensorShape &amp;outputShape)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l01060">QuantizerTest.cpp:1060</a></div></div>
25946<div class="ttc" id="namespacearmnn_xhtml_a6482907b4c57873e197324f5cb66fd4d"><div class="ttname"><a href="namespacearmnn.xhtml#a6482907b4c57873e197324f5cb66fd4d">armnn::VisitLayersTopologically</a></div><div class="ttdeci">void VisitLayersTopologically(const INetwork *inputNetwork, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_quantizer_test_8cpp_source.xhtml#l00191">QuantizerTest.cpp:191</a></div></div>
25947<div class="ttc" id="namespacearmnn_xhtml_ace74f6f9feb95a964a49d79458232703"><div class="ttname"><a href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">armnn::INetworkPtr</a></div><div class="ttdeci">std::unique_ptr&lt; INetwork, void(*)(INetwork *network)&gt; INetworkPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_network_8hpp_source.xhtml#l00101">INetwork.hpp:101</a></div></div>
25948<div class="ttc" id="_file_only_profiling_decorator_tests_8cpp_xhtml_a6560146509197f3e197d8d36f76c1347"><div class="ttname"><a href="_file_only_profiling_decorator_tests_8cpp.xhtml#a6560146509197f3e197d8d36f76c1347">options</a></div><div class="ttdeci">armnn::Runtime::CreationOptions::ExternalProfilingOptions options</div><div class="ttdef"><b>Definition:</b> <a href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">FileOnlyProfilingDecoratorTests.cpp:45</a></div></div>
25949</div><!-- fragment -->
25950</div>
25951</div>
25952<a id="a9667bea652e3a5ef81fea59b71513ced"></a>
25953<h2 class="memtitle"><span class="permalink"><a href="#a9667bea652e3a5ef81fea59b71513ced">&#9670;&nbsp;</a></span>VerifyTensorInfoDataType()</h2>
25954
25955<div class="memitem">
25956<div class="memproto">
25957<table class="mlabels">
25958 <tr>
25959 <td class="mlabels-left">
25960 <table class="memname">
25961 <tr>
25962 <td class="memname">void armnn::VerifyTensorInfoDataType </td>
25963 <td>(</td>
25964 <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
25965 <td class="paramname"><em>info</em>, </td>
25966 </tr>
25967 <tr>
25968 <td class="paramkey"></td>
25969 <td></td>
25970 <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
25971 <td class="paramname"><em>dataType</em>&#160;</td>
25972 </tr>
25973 <tr>
25974 <td></td>
25975 <td>)</td>
25976 <td></td><td></td>
25977 </tr>
25978 </table>
25979 </td>
25980 <td class="mlabels-right">
25981<span class="mlabels"><span class="mlabel">inline</span></span> </td>
25982 </tr>
25983</table>
25984</div><div class="memdoc">
25985
25986<p class="definition">Definition at line <a class="el" href="_types_utils_8hpp_source.xhtml#l00296">296</a> of file <a class="el" href="_types_utils_8hpp_source.xhtml">TypesUtils.hpp</a>.</p>
25987
25988<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>, <a class="el" href="_types_utils_8hpp_source.xhtml#l00168">GetDataTypeName()</a>, and <a class="el" href="_tensor_8hpp_source.xhtml#l00088">TensorInfo::GetShape()</a>.</p>
25989
25990<p class="reference">Referenced by <a class="el" href="_parser_flatbuffers_serialize_fixture_8hpp_source.xhtml#l00202">ParserFlatbuffersSerializeFixture::RunTest()</a>, and <a class="el" href="_parser_flatbuffers_fixture_8hpp_source.xhtml#l00250">ParserFlatbuffersFixture::RunTest()</a>.</p>
25991<div class="fragment"><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;{</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>() != dataType)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; std::stringstream ss;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; ss &lt;&lt; <span class="stringliteral">&quot;Unexpected datatype:&quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">GetDataType</a>())</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; &lt;&lt; <span class="stringliteral">&quot; for tensor:&quot;</span> &lt;&lt; info.<a class="code" href="classarmnn_1_1_tensor_info.xhtml#a8b5d0f8a24e9d9238f412260a552acf8">GetShape</a>()</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; &lt;&lt; <span class="stringliteral">&quot;. The type expected to be: &quot;</span> &lt;&lt; <a class="code" href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a>(dataType);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a>(ss.str());</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;}</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#l00088">Tensor.hpp:88</a></div></div>
25992<div class="ttc" id="namespacearmnn_xhtml_a81b5ff8545adad19a1c9d4ca076d552c"><div class="ttname"><a href="namespacearmnn.xhtml#a81b5ff8545adad19a1c9d4ca076d552c">armnn::GetDataTypeName</a></div><div class="ttdeci">constexpr const char * GetDataTypeName(DataType dataType)</div><div class="ttdef"><b>Definition:</b> <a href="_types_utils_8hpp_source.xhtml#l00168">TypesUtils.hpp:168</a></div></div>
25993<div class="ttc" id="classarmnn_1_1_tensor_info_xhtml_aea909c7327109228ef618d459015def3"><div class="ttname"><a href="classarmnn_1_1_tensor_info.xhtml#aea909c7327109228ef618d459015def3">armnn::TensorInfo::GetDataType</a></div><div class="ttdeci">DataType GetDataType() const</div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00095">Tensor.hpp:95</a></div></div>
25994<div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</a></div></div>
25995</div><!-- fragment -->
25996</div>
25997</div>
25998<a id="a9835ef753dda5b5a2fe827680e41fda7"></a>
25999<h2 class="memtitle"><span class="permalink"><a href="#a9835ef753dda5b5a2fe827680e41fda7">&#9670;&nbsp;</a></span>VisitLayers()</h2>
26000
26001<div class="memitem">
26002<div class="memproto">
26003 <table class="memname">
26004 <tr>
26005 <td class="memname">void armnn::VisitLayers </td>
26006 <td>(</td>
26007 <td class="paramtype">const LayerContainer &amp;&#160;</td>
26008 <td class="paramname"><em>layerContainer</em>, </td>
26009 </tr>
26010 <tr>
26011 <td class="paramkey"></td>
26012 <td></td>
26013 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;&#160;</td>
26014 <td class="paramname"><em>visitor</em>&#160;</td>
26015 </tr>
26016 <tr>
26017 <td></td>
26018 <td>)</td>
26019 <td></td><td></td>
26020 </tr>
26021 </table>
26022</div><div class="memdoc">
26023
26024<p class="definition">Definition at line <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00050">50</a> of file <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml">NetworkQuantizerUtils.hpp</a>.</p>
26025
26026<p class="reference">References <a class="el" href="_i_layer_visitor_8hpp_source.xhtml#l00506">ILayerVisitor::FinishVisit()</a>, and <a class="el" href="_i_layer_visitor_8hpp_source.xhtml#l00505">ILayerVisitor::StartVisit()</a>.</p>
26027
26028<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00980">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00136">NetworkQuantizer::ExportNetwork()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00050">NetworkQuantizer::OverrideInputRange()</a>, <a class="el" href="_network_quantizer_8cpp_source.xhtml#l00060">NetworkQuantizer::Refine()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
26029<div class="fragment"><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; visitor.StartVisit();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> layer : layerContainer)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; layer-&gt;Accept(visitor);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; visitor.FinishVisit();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div></div><!-- fragment -->
26030</div>
26031</div>
26032<a id="a6482907b4c57873e197324f5cb66fd4d"></a>
26033<h2 class="memtitle"><span class="permalink"><a href="#a6482907b4c57873e197324f5cb66fd4d">&#9670;&nbsp;</a></span>VisitLayersTopologically()</h2>
26034
26035<div class="memitem">
26036<div class="memproto">
26037 <table class="memname">
26038 <tr>
26039 <td class="memname">void armnn::VisitLayersTopologically </td>
26040 <td>(</td>
26041 <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
26042 <td class="paramname"><em>inputNetwork</em>, </td>
26043 </tr>
26044 <tr>
26045 <td class="paramkey"></td>
26046 <td></td>
26047 <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;&#160;</td>
26048 <td class="paramname"><em>visitor</em>&#160;</td>
26049 </tr>
26050 <tr>
26051 <td></td>
26052 <td>)</td>
26053 <td></td><td></td>
26054 </tr>
26055 </table>
26056</div><div class="memdoc">
26057
26058<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">191</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26059
26060<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">g_AsymmS8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">g_AsymmU8QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">g_SymmS16QuantizationBase</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">g_SymmS8QuantizationBase</a>, <a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml#a80ac4eda2e7f2757ec9dd96fc96dbd16">IConnectableLayer::GetOutputSlot()</a>, <a class="el" href="classarmnn_1_1_i_output_slot.xhtml#a9943775a364fc4ab53b85ac88f311886">IOutputSlot::GetTensorInfo()</a>, <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>, <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>, <a class="el" href="_file_only_profiling_decorator_tests_8cpp_source.xhtml#l00045">options</a>, and <a class="el" href="_network_quantizer_utils_8hpp_source.xhtml#l00050">VisitLayers()</a>.</p>
26061
26062<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02926">PreserveTypeTestImpl()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>, <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
26063<div class="fragment"><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; <span class="keyword">auto</span> network = boost::polymorphic_downcast&lt;const Network*&gt;(inputNetwork);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">auto</span> graph = network-&gt;GetGraph().TopologicalSort();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">VisitLayers</a>(graph, visitor);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;}</div><div class="ttc" id="namespacearmnn_xhtml_a9835ef753dda5b5a2fe827680e41fda7"><div class="ttname"><a href="namespacearmnn.xhtml#a9835ef753dda5b5a2fe827680e41fda7">armnn::VisitLayers</a></div><div class="ttdeci">void VisitLayers(const LayerContainer &amp;layerContainer, ILayerVisitor &amp;visitor)</div><div class="ttdef"><b>Definition:</b> <a href="_network_quantizer_utils_8hpp_source.xhtml#l00050">NetworkQuantizerUtils.hpp:50</a></div></div>
26064</div><!-- fragment -->
26065</div>
26066</div>
26067<a id="a2192b5ff59aacdb27f8b0238323915dc"></a>
26068<h2 class="memtitle"><span class="permalink"><a href="#a2192b5ff59aacdb27f8b0238323915dc">&#9670;&nbsp;</a></span>WrapClError()</h2>
26069
26070<div class="memitem">
26071<div class="memproto">
26072<table class="mlabels">
26073 <tr>
26074 <td class="mlabels-left">
26075 <table class="memname">
26076 <tr>
26077 <td class="memname"><a class="el" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a> armnn::WrapClError </td>
26078 <td>(</td>
26079 <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;&#160;</td>
26080 <td class="paramname"><em>clError</em>, </td>
26081 </tr>
26082 <tr>
26083 <td class="paramkey"></td>
26084 <td></td>
26085 <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;&#160;</td>
26086 <td class="paramname"><em>location</em>&#160;</td>
26087 </tr>
26088 <tr>
26089 <td></td>
26090 <td>)</td>
26091 <td></td><td></td>
26092 </tr>
26093 </table>
26094 </td>
26095 <td class="mlabels-right">
26096<span class="mlabels"><span class="mlabel">inline</span></span> </td>
26097 </tr>
26098</table>
26099</div><div class="memdoc">
26100
26101<p class="definition">Definition at line <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00123">123</a> of file <a class="el" href="_cl_workload_utils_8hpp_source.xhtml">ClWorkloadUtils.hpp</a>.</p>
26102
26103<p class="reference">References <a class="el" href="_exceptions_8cpp_source.xhtml#l00032">Exception::what()</a>.</p>
26104
26105<p class="reference">Referenced by <a class="el" href="_cl_workload_factory_8cpp_source.xhtml#l00045">ClWorkloadFactory::GetBackendId()</a>, and <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00131">RunClFunction()</a>.</p>
26106<div class="fragment"><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; std::stringstream message;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; message &lt;&lt; <span class="stringliteral">&quot;CL error: &quot;</span> &lt;&lt; clError.what() &lt;&lt; <span class="stringliteral">&quot;. Error code: &quot;</span> &lt;&lt; clError.err();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> RuntimeException(message.str(), location);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;}</div></div><!-- fragment -->
26107</div>
26108</div>
26109<h2 class="groupheader">Variable Documentation</h2>
26110<a id="aacc0d11e271ebbfcff9d613dd17604aa"></a>
26111<h2 class="memtitle"><span class="permalink"><a href="#aacc0d11e271ebbfcff9d613dd17604aa">&#9670;&nbsp;</a></span>g_AggregateProfilingEventsByInference</h2>
26112
26113<div class="memitem">
26114<div class="memproto">
26115 <table class="memname">
26116 <tr>
26117 <td class="memname">constexpr bool g_AggregateProfilingEventsByInference = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
26118 </tr>
26119 </table>
26120</div><div class="memdoc">
26121
26122<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00039">39</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
26123
26124</div>
26125</div>
26126<a id="a09bdfaa922d72ce0d9ec014dfa8f8c95"></a>
26127<h2 class="memtitle"><span class="permalink"><a href="#a09bdfaa922d72ce0d9ec014dfa8f8c95">&#9670;&nbsp;</a></span>g_AsymmS8QuantizationBase</h2>
26128
26129<div class="memitem">
26130<div class="memproto">
26131 <table class="memname">
26132 <tr>
26133 <td class="memname">const float g_AsymmS8QuantizationBase = 255.0f</td>
26134 </tr>
26135 </table>
26136</div><div class="memdoc">
26137
26138<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00033">33</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26139
26140<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
26141
26142</div>
26143</div>
26144<a id="a19994153bdbd7710f0af3973403bc4cc"></a>
26145<h2 class="memtitle"><span class="permalink"><a href="#a19994153bdbd7710f0af3973403bc4cc">&#9670;&nbsp;</a></span>g_AsymmU8QuantizationBase</h2>
26146
26147<div class="memitem">
26148<div class="memproto">
26149 <table class="memname">
26150 <tr>
26151 <td class="memname">const float g_AsymmU8QuantizationBase = 255.0f</td>
26152 </tr>
26153 </table>
26154</div><div class="memdoc">
26155
26156<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26157
26158<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
26159
26160</div>
26161</div>
26162<a id="a43ecd194778b7653578044060ba8695e"></a>
26163<h2 class="memtitle"><span class="permalink"><a href="#a43ecd194778b7653578044060ba8695e">&#9670;&nbsp;</a></span>g_ProfilingEventCountHint</h2>
26164
26165<div class="memitem">
26166<div class="memproto">
26167 <table class="memname">
26168 <tr>
26169 <td class="memname">constexpr std::size_t g_ProfilingEventCountHint = 1024</td>
26170 </tr>
26171 </table>
26172</div><div class="memdoc">
26173
26174<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00031">31</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
26175
26176</div>
26177</div>
26178<a id="a1465480794787d2278d3f0d2e6d887b4"></a>
26179<h2 class="memtitle"><span class="permalink"><a href="#a1465480794787d2278d3f0d2e6d887b4">&#9670;&nbsp;</a></span>g_SymmS16QuantizationBase</h2>
26180
26181<div class="memitem">
26182<div class="memproto">
26183 <table class="memname">
26184 <tr>
26185 <td class="memname">const float g_SymmS16QuantizationBase = 32767.0f</td>
26186 </tr>
26187 </table>
26188</div><div class="memdoc">
26189
26190<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00035">35</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26191
26192<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
26193
26194</div>
26195</div>
26196<a id="acd7f8820d124166a38c95bc8ad38811b"></a>
26197<h2 class="memtitle"><span class="permalink"><a href="#acd7f8820d124166a38c95bc8ad38811b">&#9670;&nbsp;</a></span>g_SymmS8QuantizationBase</h2>
26198
26199<div class="memitem">
26200<div class="memproto">
26201 <table class="memname">
26202 <tr>
26203 <td class="memname">const float g_SymmS8QuantizationBase = 127.0f</td>
26204 </tr>
26205 </table>
26206</div><div class="memdoc">
26207
26208<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00034">34</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26209
26210<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00225">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00191">VisitLayersTopologically()</a>.</p>
26211
26212</div>
26213</div>
26214<a id="a1a9a6dea47de10df8e3c76dd45df56fb"></a>
26215<h2 class="memtitle"><span class="permalink"><a href="#a1a9a6dea47de10df8e3c76dd45df56fb">&#9670;&nbsp;</a></span>g_TestTolerance</h2>
26216
26217<div class="memitem">
26218<div class="memproto">
26219 <table class="memname">
26220 <tr>
26221 <td class="memname">const float g_TestTolerance = 0.000001f</td>
26222 </tr>
26223 </table>
26224</div><div class="memdoc">
26225
26226<p class="definition">Definition at line <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00036">36</a> of file <a class="el" href="_quantizer_test_8cpp_source.xhtml">QuantizerTest.cpp</a>.</p>
26227
26228</div>
26229</div>
26230<a id="a41794552ff67b0dad16de60f9b8e7d7c"></a>
26231<h2 class="memtitle"><span class="permalink"><a href="#a41794552ff67b0dad16de60f9b8e7d7c">&#9670;&nbsp;</a></span>g_WriteProfilingEventSequence</h2>
26232
26233<div class="memitem">
26234<div class="memproto">
26235 <table class="memname">
26236 <tr>
26237 <td class="memname">constexpr bool g_WriteProfilingEventSequence = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
26238 </tr>
26239 </table>
26240</div><div class="memdoc">
26241
26242<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00034">34</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
26243
26244</div>
26245</div>
26246<a id="a6ce7e56eb10e440463f09eee8f213adc"></a>
26247<h2 class="memtitle"><span class="permalink"><a href="#a6ce7e56eb10e440463f09eee8f213adc">&#9670;&nbsp;</a></span>g_WriteReportToStdOutOnProfilerDestruction</h2>
26248
26249<div class="memitem">
26250<div class="memproto">
26251 <table class="memname">
26252 <tr>
26253 <td class="memname">constexpr bool g_WriteReportToStdOutOnProfilerDestruction = <a class="el" href="_ref_layer_tests_8cpp.xhtml#af3b727ae5a13ff472892ab8bda2eb1b5">false</a></td>
26254 </tr>
26255 </table>
26256</div><div class="memdoc">
26257
26258<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00043">43</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
26259
26260</div>
26261</div>
26262<a id="a602ddc6408c3347ba4c1eba623003984"></a>
26263<h2 class="memtitle"><span class="permalink"><a href="#a602ddc6408c3347ba4c1eba623003984">&#9670;&nbsp;</a></span>LOWEST_CAPTURE_PERIOD</h2>
26264
26265<div class="memitem">
26266<div class="memproto">
26267 <table class="memname">
26268 <tr>
26269 <td class="memname">constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u</td>
26270 </tr>
26271 </table>
26272</div><div class="memdoc">
26273
26274<p>The lowest performance data capture interval we support is 10 miliseconds. </p>
26275
26276<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00021">21</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
26277
26278<p class="reference">Referenced by <a class="el" href="_profiling_tests_8cpp_source.xhtml#l01683">BOOST_AUTO_TEST_CASE()</a>, and <a class="el" href="_periodic_counter_selection_command_handler_8cpp_source.xhtml#l00059">PeriodicCounterSelectionCommandHandler::operator()()</a>.</p>
26279
26280</div>
26281</div>
26282<a id="abdcd184ed3bd648bb31d385040cafd5d"></a>
26283<h2 class="memtitle"><span class="permalink"><a href="#abdcd184ed3bd648bb31d385040cafd5d">&#9670;&nbsp;</a></span>MaxNumOfTensorDimensions</h2>
26284
26285<div class="memitem">
26286<div class="memproto">
26287 <table class="memname">
26288 <tr>
26289 <td class="memname">constexpr unsigned int MaxNumOfTensorDimensions = 5U</td>
26290 </tr>
26291 </table>
26292</div><div class="memdoc">
26293
26294<p class="definition">Definition at line <a class="el" href="_types_8hpp_source.xhtml#l00018">18</a> of file <a class="el" href="_types_8hpp_source.xhtml">Types.hpp</a>.</p>
26295
26296<p class="reference">Referenced by <a class="el" href="_input_output_tensor_names_8cpp_source.xhtml#l00081">BOOST_FIXTURE_TEST_CASE()</a>, <a class="el" href="_concatenate_8cpp_source.xhtml#l00014">Concatenate()</a>, <a class="el" href="_workload_utils_8hpp_source.xhtml#l00049">CopyTensorContentsGeneric()</a>, <a class="el" href="_tf_lite_parser_8cpp_source.xhtml#l01898">TfLiteParser::OutputShapeOfReshape()</a>, <a class="el" href="_descriptors_8cpp_source.xhtml#l00018">PermutationVector::PermutationVector()</a>, <a class="el" href="_permute_8cpp_source.xhtml#l00098">armnnUtils::Permuted()</a>, <a class="el" href="_splitter_8cpp_source.xhtml#l00022">Split()</a>, <a class="el" href="_splitter_8hpp_source.xhtml#l00017">Splitter()</a>, <a class="el" href="_tensor_8cpp_source.xhtml#l00028">TensorShape::TensorShape()</a>, and <a class="el" href="armnn_utils_2_transpose_8cpp_source.xhtml#l00098">armnnUtils::TransposeTensorShape()</a>.</p>
26297
26298</div>
26299</div>
26300<a id="a680b729be51e88d93f2cbbdfeb5eaf4d"></a>
26301<h2 class="memtitle"><span class="permalink"><a href="#a680b729be51e88d93f2cbbdfeb5eaf4d">&#9670;&nbsp;</a></span>tl_Profiler</h2>
26302
26303<div class="memitem">
26304<div class="memproto">
26305 <table class="memname">
26306 <tr>
26307 <td class="memname">thread_local <a class="el" href="classarmnn_1_1_profiler.xhtml">Profiler</a>* tl_Profiler = nullptr</td>
26308 </tr>
26309 </table>
26310</div><div class="memdoc">
26311
26312<p class="definition">Definition at line <a class="el" href="_profiling_8cpp_source.xhtml#l00485">485</a> of file <a class="el" href="_profiling_8cpp_source.xhtml">Profiling.cpp</a>.</p>
26313
26314<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00499">ProfilerManager::GetProfiler()</a>.</p>
26315
26316</div>
26317</div>
26318</div><!-- contents -->
26319</div><!-- doc-content -->
26320<!-- start footer part -->
26321<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
26322 <ul>
26323 <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li>
26324 <li class="footer">Generated on Fri Mar 13 2020 16:09:17 for ArmNN by
26325 <a href="http://www.doxygen.org/index.html">
26326 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
26327 </ul>
26328</div>
26329</body>
26330</html>