aboutsummaryrefslogtreecommitdiff
path: root/20.02/namespacearmnn.xhtml
diff options
context:
space:
mode:
Diffstat (limited to '20.02/namespacearmnn.xhtml')
-rw-r--r--20.02/namespacearmnn.xhtml26330
1 files changed, 26330 insertions, 0 deletions
diff --git a/20.02/namespacearmnn.xhtml b/20.02/namespacearmnn.xhtml
new file mode 100644
index 0000000000..0c907857c4
--- /dev/null
+++ b/20.02/namespacearmnn.xhtml
@@ -0,0 +1,26330 @@
+<!-- Copyright (c) 2020 ARM Limited. -->
+<!-- -->
+<!-- SPDX-License-Identifier: MIT -->
+<!-- -->
+<!-- HTML header for doxygen 1.8.13-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="robots" content="NOINDEX, NOFOLLOW" />
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>ArmNN: armnn Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/x-mathjax-config">
+ MathJax.Hub.Config({
+ extensions: ["tex2jax.js"],
+ jax: ["input/TeX","output/HTML-CSS"],
+});
+</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">
+ &#160;<span id="projectnumber">20.02</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('namespacearmnn.xhtml','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">armnn Namespace Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Copyright (c) 2020 ARM Limited.
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
+Namespaces</h2></td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Classes</h2></td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr 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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<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>
+<tr class="separator:ac858d91eedb7b4dba1bcd0aa760ab510"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1854d9cda81304325664363c1fd0fb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ade0af9dacaa52cafdd701bef2e901c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a754d43dc24a0fe36ecb3044d8f13a413"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a65a0ad0a7b807e70295481a7b9cb93ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a12bff6d51d63dac1375c89bc8415dc46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ac14705405cbcdd580df613de6766fe65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a3647f60510bc8ddaced01c51b0ee8714"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7863c179ff92feec660c48ab7b95ae55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a003d213dd28b0b8c0f26fbf268ccb975"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a60291543fe872b795e71e05bcd835fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a11fa919c11fe46aad613b2e960fcfe90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ace74f6f9feb95a964a49d79458232703"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a674efcf6cbdb9e831d653ff0e821fb38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a83015160d8c67d5d77735eb0d4033d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a150468a02bd7b2d2d061c4aaaee939f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a2d3a708a26ac6d77bf8f15506e89a25a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5b05f3b7208ec7cea3338e30057c0bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a280670a263dc4fd40491f6d0a2737f44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa01bce88f89975a5a031db4cc8861527"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8f091a512915d1cb29a4ebf13dfc53ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae18caa7ee6287aa7f8c2a5ce6bc92382"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5a665483e56a688e9f8180accdf72d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ab8cf8f9fb6792e654c2d8d8382f6f01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="memdesc:afad4088a9a058114ee5f87246f87bf49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Define LayerGuid type. <a href="#afad4088a9a058114ee5f87246f87bf49">More...</a><br /></td></tr>
+<tr class="separator:afad4088a9a058114ee5f87246f87bf49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a15f3ad9b5e4e3d46b0a6dda246a7bc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a41119e261eec9343888d2ceab1e4999a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a15f53f26b8495b51d0bba3d1bc4efc80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac6e86c1def7f674d3c4cb7f577874aa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a293695a94110c1a0eb77e29c22dce79a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a689de00cadd81b4e35b7448e4fbbc034"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7b4ac337ed307e0739e628d5b9883856"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a02847c99a2acae3b267615479f93ab55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a419086ecb4dc9d0f9e5d8933c87e2ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae73bf7cb78cc552c5511431b0d583f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae3bff3986cb5a50637c9b3238d821f54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memTemplParams" colspan="2">template&lt;LayerType Type&gt; </td></tr>
+<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>
+<tr class="separator:a6b5db6cc9aad8ec0ac7b14f859aacdab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9173495a61a0092b5f38b855f02c3585"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9b8e5a95f8c061bbbcdb036915dcb61a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9eb69ebdaf4ceb8014e7c8a540266100"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0743ed5e860c316a20b68ca96301b411"><td class="memTemplParams" colspan="2">template&lt;DataType DT&gt; </td></tr>
+<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>
+<tr class="separator:a0743ed5e860c316a20b68ca96301b411"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8c42c6647e31ebe525aeba878d133e45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a86e4b37c7c48cf5fbc5e99ccc6fd50b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a997e96288bdb106c922202e3f33d5d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac757baefa4b72b54c38f713f86418f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a061aafb62b3769f55369845c3990ec7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0f38fa92b2468d5378258a2b074c1a31"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:abaedcfd0ae08790c03bfe8ba7586dd84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0493144f15b35804a133c9aa0b63fcc9"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a0493144f15b35804a133c9aa0b63fcc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad4d53881107428c301d43b5aad16bfe0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:ad4d53881107428c301d43b5aad16bfe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3e4b88b993c90b274e0bd268c35d798e"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a3e4b88b993c90b274e0bd268c35d798e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab539ef5a0c152536da71c8fcc065efb5"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:ab539ef5a0c152536da71c8fcc065efb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a20d2055c37fedf3f39db9facf2c8c697"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a20d2055c37fedf3f39db9facf2c8c697"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a9cbc0957cf0637cc3fd9702086117cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a827d59b5a779a8089017802172817f3c"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a827d59b5a779a8089017802172817f3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6486138451112140f98516c0bee18615"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a6486138451112140f98516c0bee18615"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptor &gt; </td></tr>
+<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>
+<tr class="separator:a6d4fbf927a9d8e68cab1d7965c7dbc44"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2231ac018fe2c465f2d42fef597d67e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a37a1a6b381ccc76df203fee023234996"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a308ba160745ba35e1de8d698d0139eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a947e07902b1b5d98b57eeae34053146b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a77e1ccec3acbb3dadba3fd4939508b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a569ba573145851e753623be817b98e9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a18b8b3bd9e39c84e36ab560978ab64c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9b0bb8592cd6e6cb693d305825fae448"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab51075960a6cf82a8bb6ee81c9efa97d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac8d7aa6e66fb59a839833b160f619228"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad194629946077375dcce05b2449334c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0c1df21c99a094d2f078ca90047a73ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a44ab486f2a7728d75bbf52ffa1025ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae6d1d064ec7d33b2cc5bcc8afafbe193"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad607a96fafba334ba5bde946947dd0af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2b2b0a60cbb51bf3eb9bd2899aee2c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7a9d365fbb868d53e67c4cdfdbf9cf7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a01853f5d02495c04636016c1e3e7c144"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aabff736a576814611f65ce1a14600a17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5c3a2aa3adc87d79164914b63f27dc25"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a044df856403d0af13189f49bcfb209dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa8c69a3741eafef59e51564511403fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af0b5fb43c9e4ebee9928c3cc619a6c3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aef8145fff0dca42e42786745414fec96"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9e2582f828ee36a6bce3e1abdd660bc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abc074517cf18f4e0827faca852df7bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acc8fc2b1c708fd1c7af0d04e004e8516"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aed5e6ff8fdf785380ed4c8ca21702da3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad1c0fb6bfa580b04574ab56971b6cbc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a54c3f7c7b9909e828a084f68dc78a031"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a50ffe5068ecb2fbf7f73b30ef0d753f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6ffed93fad525ce1d534cec2cdaee6bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a031a365fb37880a7f015dab159877a72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aefcfe4efab61267262d1e02cb8af739d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad67165b4639bd5e50e5bc4538d226b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1d13693cba12d3e406454b852527fb37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4d9e736b0f2d5f6d66ea0a798366935c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">CpuRef</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">CpuAcc</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">GpuAcc</a> = 3
+ }<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>
+</td></tr>
+<tr class="separator:ae2f04a162585c0a5222a537efd5456ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>,
+<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a78d1be0baa31e083ae8da99aaedaf650">DirectCompatibility</a>,
+<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016a46e8b7bfd6fd3c0cb34a100478a39189">ExportToTarget</a>,
+<a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">CopyToTarget</a>
+ }</td></tr>
+<tr class="separator:aff209afc1dc598da399e3e78617ce016"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">trace</a>,
+<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d">debug</a>,
+<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>,
+<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">warning</a>,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">error</a>,
+<a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">fatal</a>
+<br />
+ }</td></tr>
+<tr class="separator:a4dc0adc6737b5944e7671bee71788407"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523">Malloc</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">DmaBuf</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">DmaBufProtected</a> = 4
+ }</td></tr>
+<tr class="separator:a0fc99721e27eb20ecd0ea85a3cc8b488"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a> = 1
+ }<tr class="memdesc:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="mdescLeft">&#160;</td><td class="mdescRight">enumeration <a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">More...</a><br /></td></tr>
+</td></tr>
+<tr class="separator:a67a0db04d321a74b7e7fcfd3f1a3f70b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a> = 0,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a> = 3,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a> = 4,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a> = 5,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">QuantizedSymm8PerAxis</a> = 6,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">QSymmS8</a> = 7,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">QAsymmS8</a> = 8,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">BFloat16</a> = 9,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">QuantisedAsymm8</a> = QAsymmU8,
+<a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">QuantisedSymm16</a> = QSymmS16
+<br />
+ }</td></tr>
+<tr class="separator:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a> = 2
+ }</td></tr>
+<tr class="separator:ad1d5cce2d9e9a5d61c243e5c989112e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">Sigmoid</a> = 0,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">TanH</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">Linear</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559">ReLu</a> = 3,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d">BoundedReLu</a> = 4,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">SoftReLu</a> = 5,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">LeakyReLu</a> = 6,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 7,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">Sqrt</a> = 8,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">Square</a> = 9,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">Elu</a> = 10,
+<a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">HardSwish</a> = 11
+<br />
+ }</td></tr>
+<tr class="separator:a56297e0f7b215eea46c818cb7528d9ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a> = 1
+ }</td></tr>
+<tr class="separator:ae7e8cbf71db6a490789ca6dcaa8deeae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">Equal</a> = 0,
+<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a">Greater</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">GreaterOrEqual</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">Less</a> = 3,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">LessOrEqual</a> = 4,
+<a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">NotEqual</a> = 5
+<br />
+ }</td></tr>
+<tr class="separator:a2d299363c9fc33334c571fa29ca4f58c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6">Abs</a> = 0,
+<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">Exp</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054">Sqrt</a> = 2,
+<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">Rsqrt</a> = 3,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">Neg</a> = 4
+<br />
+ }</td></tr>
+<tr class="separator:a1cfaa710db2a54673b21d2ea2da757c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">Average</a> = 1,
+<a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">L2</a> = 2
+ }</td></tr>
+<tr class="separator:a961bbfe1db71a848eff5a1f0ab775718"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a> = 1
+ }</td></tr>
+<tr class="separator:a9a2af2f8c4af4f9efa8e79417d505ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a> = 1
+ }<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>
+</td></tr>
+<tr class="separator:a3888429b6ebc79f9a7df549e5e4d9a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a> = 1
+ }</td></tr>
+<tr class="separator:abe18a5033f2ab9c0de82c676b48f5437"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a> = 1
+ }</td></tr>
+<tr class="separator:ad605d1661fa0d8c7fea651d82fbe11c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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,
+<a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a> = 1
+ }</td></tr>
+<tr class="separator:adf2e5515c4c36a3e7e46bb8b83c6754e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">Trace</a>,
+<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba">Debug</a>,
+<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">Info</a>,
+<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa">Warning</a>,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,
+<a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">Fatal</a>
+<br />
+ }</td></tr>
+<tr class="separator:a93a3ba385cad27c4774e5fe64c025d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>,
+<a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">LayerErased</a>
+ }</td></tr>
+<tr class="separator:a34eaed09302a4d7bfe930c13a7673e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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 />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">FirstLayer</a>,
+<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36">Activation</a> = FirstLayer,
+<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">Addition</a>,
+<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c">ArgMinMax</a>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba">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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3">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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<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>,
+<br />
+&#160;&#160;<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a">TransposeConvolution2d</a>,
+<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">LastLayer</a>,
+<a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aaf70b1ac863830a4e1ce6268c8399f54">Transpose</a> = LastLayer
+<br />
+ }</td></tr>
+<tr class="separator:a56943a0946e5f15e5e58054b8e7a04a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>,
+<a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">Event</a>
+ }</td></tr>
+<tr class="separator:a4e2dd387ba6f0dc5164b4cdf8de3262a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>,
+<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68">Rapid</a>,
+<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">Normal</a>,
+<a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">Exhaustive</a>
+ }</td></tr>
+<tr class="separator:a707090747256af276c389e0cf1cb0a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<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>
+<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>
+<tr class="separator:a5974a183710829851dbd98a4a919cd50"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a6bab17bfd45c2fa4592c431bc25ad10e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a5b0313cb554380d6e4dfb24c31f9e605"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a127a59fdf5e6d2fa74f87f9265de958b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a345acf4e0dc087eee3f9688029ee6328"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afc46634e26857d037ee80bb5a74ef28a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memTemplParams" colspan="2">template&lt;template&lt; typename... &gt; class TContainer, typename... TContainerTemplateArgs&gt; </td></tr>
+<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>
+<tr class="separator:a62a9e8c87b9b9f504726746ba4a000a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac2807505b850738bc8a1991ce669dd47"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a14de37f4c695ac066f999aa75b7cb136"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
+<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>
+<tr class="separator:a2fe587812a8dd3e7d7419cbb84a7f4ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a733ae6b70d0bfa43433c3e7606992328"><td class="memTemplParams" colspan="2">template&lt;typename TensorShapeIt &gt; </td></tr>
+<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>
+<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>
+<tr class="separator:a733ae6b70d0bfa43433c3e7606992328"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
+<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>
+<tr class="separator:ae4ab3bf0697ad13316a6bcba0a8fade5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6ed414c05eb6d4c89e0e4a475a0479c0"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType &gt; </td></tr>
+<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>
+<tr class="separator:a6ed414c05eb6d4c89e0e4a475a0479c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memTemplParams" colspan="2">template&lt;typename ExceptionType , typename ComparedType &gt; </td></tr>
+<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>
+<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>
+<tr class="separator:ae57b7f9e2cb7080bf10b28d1f72b558e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a82e98ef05fd67036d1195ba17174d685"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a58bfb9626d373249745d78b95543116e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a1b01771dc5a057d09f8cd82492154a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a7d18d6613bb865b66b05d4d6e0391934"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a2399052d9cbb2b88720b07511a2e362f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a757df85e956e425c1a082d35a98ca4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:acc76cdec78906a3457a9c2293a453869"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aaa152f86599af5189c9d637fe7ade6d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a98994026cec1578ceb7aa74c834b00d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:af22d4421773ce95e0f2324fc1a66c0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a8b96de58aae24091d0ad761f27360630"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a399d38872500c6ac84ae031673176ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ac92dceabfbc1e46fe74f699f733886a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a29b4b6b364a31632597970d0bad3d78f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a0e3cdea6143299b258a9c34b596bad4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:afe39427f8974f064b838df5c7f0ebebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a89e9c52419c572f05bf9737a7a60b267"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aa2f4e75d4a4f61b24de0dfe150952c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:adffa596b4bdecd54ca460853cd1439e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a197a353aa963497d29a07796268ea5c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a0906736b90464c0eb3ce5a87e05ebeee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a3e8b3af7771ffb37ede50aa2d9cc3af6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a3b85a270baf98ea6b040bd395c2d700a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a0cdc60b4988b2193b97590e35f34a07e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a87ac712443e46c0deb38ab0eaf637e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a7f518a73b9f7e41c5584c1f49bca8568"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a6e2c7ec2b8d47bde2bc9fa04bb2091f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ab99d3d944b80f47bd1be70f63cc60abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a56ff60c2946bf0b7e772007acce0d7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a754b0ac19fd6341ce2b5f480c3b35e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a701cecec7714cf8bc9dca804f473610d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a515e8a98d7ef9ecda64a2e1e5298461a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aa3a1bea3b3cd5611f13c06020dababc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a3b4773564c3fd8c88e697ffe0afbe10d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a5a0c1871f7e4822adb8b15e8ae76bca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aea548aa1485adbeeb3e393a13bb6bff8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a4069381c4737d57fc7fd299a61ad9ca1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:af5014cbc003abcf201d4372b0012734c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a936d3f949a334668f839fb0bdd170b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a90a1aadb53c7537f225252afd681ff22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:accc42ba9679a474e75b43cdf1efa9422"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a477695b3df8c0abd2efcf02051f61065"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a4b3a41e24d4b9e2b4cb431dc90c48970"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:addffaddb4bdb6ec506fe08debcce9b75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7ce5f7168bf0d1e7efe269d59ed564ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a6487e532e0cb72a210096185e31e2bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a10e8442be2b8596afd5770e98b904caa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aebe3dc6730e1b29aee9c9f33b8f94121"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:afbf752a51fa513e0a54e343be130d962"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a85fcfea412723413a05f0743c84053aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ac6cc8e0bd35d229486fe6d844d88e0d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a71f2cc06b097cb5c4f0a1f48130a823b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac9aad76a34137b6359a867b282ea7cfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7f8325a4bc02f2f687ba1968b595ec0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9cdee30c21f3dd630b4e460527105b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a5d94c2125c725df5b619d16db9d4a8e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ae91e1849e95350c8e50912a217999eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a84f86b4de5adf0b164e811c87051a0ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77780137c47f528921f6537447060f05"><td class="memTemplParams" colspan="2">template&lt;typename T , class... Args&gt; </td></tr>
+<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>
+<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>
+<tr class="separator:a77780137c47f528921f6537447060f05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a19a90c41ca2f46ab29918fef1a6ad72e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa093207ea7c4e7a9c9abe40d2f57995b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5cda3502382f06a64c3cbeb1829bd850"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aabb76a77e95921785f576bb29b495cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6dac966f265381903c8ef4f392becced"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a517314c21ac5309b90408da162212f9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a67d7ce2e14ebd328f423322db88279c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a129bde68152f5892e6abdedcb62aa983"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa02b9e06fb20fa3c13da0427e6ee5ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a637fea04314a9870c1dc4355c1bed429"><td class="memTemplParams" colspan="2">template&lt;unsigned N&gt; </td></tr>
+<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>
+<tr class="separator:a637fea04314a9870c1dc4355c1bed429"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a65645fa03bf8cddfb9d8a9f83beeb6e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a81b5ff8545adad19a1c9d4ca076d552c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aeef70b7611ae71e97ab55c75ef72b210"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aeadd602e128a2be97161345b48533417"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad57460ea53cd0b519a3b3547eaf1db7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aded981a42027bd3302b9c0f09d988659"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad44c007f21af2d0375e3ef9400a1b275"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:ad44c007f21af2d0375e3ef9400a1b275"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad91bc7bfe29186f5d78c28386c6c5309"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa172264d7075abf828e0b6894996a561"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aaa5b68f3f5bb73b1d3c85d895547a372"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa6d7532e14af97577c054f96d0cf23b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
+<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>
+<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>
+<tr class="separator:ad773a034fb9983e15f3094b4c5c7c30c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memTemplParams" colspan="2">template&lt;typename QuantizedType &gt; </td></tr>
+<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>
+<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>
+<tr class="separator:a855293b1be0581fb61ef6a1c5b027d0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9667bea652e3a5ef81fea59b71513ced"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a44affeeb090c3c6a3062830562672e84"><td class="memTemplParams" colspan="2">template&lt;typename ... Ts&gt; </td></tr>
+<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>
+<tr class="separator:a44affeeb090c3c6a3062830562672e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37fa39012e90d568df7f774cd6d1e956"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
+<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>
+<tr class="separator:a37fa39012e90d568df7f774cd6d1e956"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6ffcdfab3ded108070933bf4cee52a0"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
+<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>
+<tr class="separator:ad6ffcdfab3ded108070933bf4cee52a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3db25ec960ff865f0ed144dc018e61e"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
+<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>
+<tr class="separator:ae3db25ec960ff865f0ed144dc018e61e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0071d5c83ebd2132118af70b1f3a539a"><td class="memTemplParams" colspan="2">template&lt;typename Dest , typename Source &gt; </td></tr>
+<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>
+<tr class="separator:a0071d5c83ebd2132118af70b1f3a539a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28f9c43e98211c77e579a14fb465bc77"><td class="memTemplParams" colspan="2">template&lt;typename DestType , typename SourceType &gt; </td></tr>
+<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>
+<tr class="separator:a28f9c43e98211c77e579a14fb465bc77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aa59f7a819c3e29d10ffc41e5c0616872"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a238a74871f634b778176e5dc8391888a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a238a74871f634b778176e5dc8391888a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7296af8a86f22ef7f144dc02c4c94324"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a7296af8a86f22ef7f144dc02c4c94324"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a7b224e4c135fa1fdb3e54dfe945e07f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ad23bcbfd1876f1ae11c926d0e3e8c3e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2bcd446605a7ee354be1038983358e04"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a2bcd446605a7ee354be1038983358e04"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a6a0a86fe227d22c1cf7381798ad8550f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a000bb59f20fa937e2acff1c2aaba7944"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a000bb59f20fa937e2acff1c2aaba7944"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a14d7f180bf51e86850305965c3707e07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a686b8288a04b3ffff67d560eea53f6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9da573d7a1fc03726fd41f2130cbcf92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:ac4fb1513cf6f4f3f40ab3d6559ec4067"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb1e69829289fb07cc349c0884f27abd"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:afb1e69829289fb07cc349c0884f27abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc630e11a5baa28ad5723568a7a60109"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:acc630e11a5baa28ad5723568a7a60109"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a324e860c347972fce7a1c07531bed06e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a324e860c347972fce7a1c07531bed06e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ae22db3ab5196edbb2e4e5244adc512e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a87ffe3fb58ec36989d343e53e23fb0f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a43b8024cb70c07116be132ca28b12a21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a43b8024cb70c07116be132ca28b12a21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a300c356944bb1e9d2dff6191d1c3501c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a300c356944bb1e9d2dff6191d1c3501c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a307007c2249288fe158bfdfaf9e1c413"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a307007c2249288fe158bfdfaf9e1c413"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4471d39d8390fc550c1f8688639e66f5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a4471d39d8390fc550c1f8688639e66f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8df06bed5f1257864645e45948afa5c"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:af8df06bed5f1257864645e45948afa5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab2f52d0c728933e36f581a07676d9fe9"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ab2f52d0c728933e36f581a07676d9fe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad596268fcd03c87a4b6fde86f4732546"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ad596268fcd03c87a4b6fde86f4732546"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a939154289f544a02baec0735b27b8894"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a939154289f544a02baec0735b27b8894"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26a46c27bca08b5bd26abba341f1d795"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a26a46c27bca08b5bd26abba341f1d795"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a95e2d190d7483017b4f4841dd07776e5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a95e2d190d7483017b4f4841dd07776e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a22772d461066f995cd72d13066b0f46d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a22772d461066f995cd72d13066b0f46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a955b1001b8c57c60ce443a1e31468f20"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a955b1001b8c57c60ce443a1e31468f20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a72f7601d11f32c8d9ccb49a80fcf662a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a4acae0cdcdfab8e941af5c4e42e58cb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a575f5487e62465b6b9edbc447a26f32f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a575f5487e62465b6b9edbc447a26f32f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:aa689e4a3aa77e9d9e5851f566c5eb8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a548fb17a9bff172e751ae4bd3add62b5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a548fb17a9bff172e751ae4bd3add62b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adef1c8c63daa9d348a29e74eac33a054"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:adef1c8c63daa9d348a29e74eac33a054"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a57bcf309be7adcc91001834979f87bde"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a57bcf309be7adcc91001834979f87bde"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a36f16b97bcb662caaa4eae24ea16cccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb6f9bd4f43118749a0336074bed7b35"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:afb6f9bd4f43118749a0336074bed7b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d08fb555c6d1cba705fd73b71797a28"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a0d08fb555c6d1cba705fd73b71797a28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b231c8a547d4030d9a4a1618810c20b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a6b231c8a547d4030d9a4a1618810c20b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af079ba32db74f53aba1ad19193cd2a4b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:af079ba32db74f53aba1ad19193cd2a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa17969606f64ea581c28431f2395e653"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:aa17969606f64ea581c28431f2395e653"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a70f3d83f6d1e3918eab895c8083058fa"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a70f3d83f6d1e3918eab895c8083058fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a9e8199bdc39f928f694591a41d7aa0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ad32a13408ace1c1fa520ed64a2cbe70f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a40f1546c0fa69f318eeab4b29cc64b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a140713619ee498a149854a5376b8d072"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a140713619ee498a149854a5376b8d072"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a7a6e68f66d1d3819640b0f2d46a55fd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ab6f1994db909dcc399cb1f8bc50c2d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a1e6b17606926b8f69dbeda7f7ff1df95"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade84059b48b38da3a233bed287864c5b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ade84059b48b38da3a233bed287864c5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a6e5eaa19ff232f11daa9a1c6caccf7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a58a5defa35b12773a97760efadffef4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a58a5defa35b12773a97760efadffef4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:aaaaf64c0888ab25bfae770bd4c2ec34b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31bcd6f755df954a4d7b020a09499105"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a31bcd6f755df954a4d7b020a09499105"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6a17f58da2071720e3003a56a092aab3"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a6a17f58da2071720e3003a56a092aab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aafc370ea363f0565c3a8bced1e37c79e"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:aafc370ea363f0565c3a8bced1e37c79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3cbbb4e00618b072ace46751e660a295"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a3cbbb4e00618b072ace46751e660a295"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:af6af4b51e08d3e811620811ab5e0cd2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ac2d31ced5505a9d05287f5b71d25e34a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a81c31de4f532a95ab85ed6d999029332"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a81c31de4f532a95ab85ed6d999029332"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a24d3abbfc1ed81df673452c7148aa0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab676aab9119d1417764849099a099ecf"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ab676aab9119d1417764849099a099ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a1b5ff142f1d4420a8d83d9bcff1bfff4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:ad640080ff4ea3e4f9ff05823e32ce15f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a9cc235c8c5e2ef3d2788cd558d676b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a110b9fdf7f17a1d065cd59ebc4bb76f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af44c8ebb1b55f4c42cc301d0bf030aa5"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:af44c8ebb1b55f4c42cc301d0bf030aa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60af5a86cf0261d0bdf4312736ab4461"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a60af5a86cf0261d0bdf4312736ab4461"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac7cce6c8c3c53b2feeba6548fc3fb00c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa8d5d17d1edd51d899fe699eb6156b58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae1fc9dbaad02fff7f7227cc10536e1ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa9da770c93f812b264861f98cfdd650c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a658eea4e746b1e664796c48d7eaf19f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a99260bf94e4f8d0c8a527970cd52ce93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adf5de1faf58e2eea99a932883edc3ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a599a95f708fa0b6a6230dc6c9e73ea3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4bb384bc41a94bc7c3b4f543cd3fd437"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memTemplParams" colspan="2">template&lt;typename T , typename V &gt; </td></tr>
+<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>
+<tr class="separator:a13c7d751e4d37f65a6d40c3c6e50d2b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:af6dbe371ec651a8e0063624fdf32afc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:aeaee60c3c6c67a7cf37bbef45b89fc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e64aab48baba12883c73e90bfd07e77"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a6e64aab48baba12883c73e90bfd07e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a621c8ffe11bba3d7ab304a9ad3feec2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a02d627e25da543b79ee8a59a1193a426"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a02d627e25da543b79ee8a59a1193a426"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a4e4802d0916cb8b7da508ab03ce1f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07ae80b502ab664f1aaf7d6c00725982"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a07ae80b502ab664f1aaf7d6c00725982"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a0b55e509dd7e3bfea233a389a18c21e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a216969fbba54df95de3e68435b8074d7"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a216969fbba54df95de3e68435b8074d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3d0087e2533d808debd5c959fb3901f"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:ad3d0087e2533d808debd5c959fb3901f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2febf8d85a92b69e4a677a7c632418ee"><td class="memTemplParams" colspan="2">template&lt;typename ... Params&gt; </td></tr>
+<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>
+<tr class="separator:a2febf8d85a92b69e4a677a7c632418ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f523aee1752323aeaf899085649320b"><td class="memTemplParams" colspan="2">template&lt;LogSeverity Level&gt; </td></tr>
+<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>
+<tr class="separator:a5f523aee1752323aeaf899085649320b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7658f93d899c8646515a29370e6aa994"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a38e626422579decc13e3ee37da1a84c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae50fff9aa2a1ce46392d8641c10aa3bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af002111f64aee648e3258247075cae36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a56f168327453ea4461cbc1c0ac7f15b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8acab870a91373c720c9822b59ecf3b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a76dca645d0d0665f74e171bbc1901469"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1ec6b4c20ed294a96cf94c33c24caaf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae97734279fd10b4c754cc15bc8ed9dad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5ee4a1cca55f69b31e625c786655ed1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:accb1637c58e1523f740025e0d0e7c6dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab46c7f5f4736d550ab0e5e05a0fff4a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8d9f52bbb69750456acca06988beabda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab6ed577caec49def150e231c63af0d12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5d3468fb5880eb444cd25b55a86220ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a310dd804fd70eadb1e8854325e63f0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memTemplParams" colspan="2">template&lt;typename srcType &gt; </td></tr>
+<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>
+<tr class="separator:a0e2bce68a1f7eff47ead4d9a2804eb91"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9835ef753dda5b5a2fe827680e41fda7"><td class="memTemplParams" colspan="2">template&lt;typename LayerContainer &gt; </td></tr>
+<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>
+<tr class="separator:a9835ef753dda5b5a2fe827680e41fda7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad31c56533e4f9f9f51719599fbfcf7bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abf625e50a5eaeafce5b39580dc95a9d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2616ffdae2db993af5c08019fb61860a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a4907f6b88c3e72be6b8ae876de355e0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c8a28b71e49c04596289ff281e58f1a"><td class="memTemplParams" colspan="2">template&lt;typename Front , typename... Others&gt; </td></tr>
+<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>
+<tr class="separator:a0c8a28b71e49c04596289ff281e58f1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa7427025a851113a492de0b68b23d22a"><td class="memTemplParams" colspan="2">template&lt;typename... Args&gt; </td></tr>
+<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>
+<tr class="separator:aa7427025a851113a492de0b68b23d22a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a12d3ffe11b54c0aaa59bdd8415701c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1b90db39f6a9ebd11591e76fa364b06f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab03dcfb3b4019d8f58a67c41681951ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4b1e2158af2aedd3f00d2121c45b0f93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a20f74b679d59b52e9fae3bbef8f10ffb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a50805c29c35b9903c2dea301d8091711"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
+<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>
+<tr class="separator:afce94270d9c4a51cd0c4ac6a58af4e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49538fa883b70c944e437d65d6628eec"><td class="memTemplParams" colspan="2">template&lt;typename Delegate &gt; </td></tr>
+<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>
+<tr class="separator:a49538fa883b70c944e437d65d6628eec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a09ff1f6670d27d3b41e5b5d35a6c9f37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6b10dc0d12c7f4a52ad01b9975dbe908"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a10d15f3df1ab52b3b915a4be1dbf386b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a62448ee306fc41cc7980c4b7eac3ebb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a66e9fcc01969d6afa35dfaa212ded223"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a154c5a01df05412929d89e06fc4d0d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6eadb1671955b1bf7cdd8b29fd34aa33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac36bd2336c0e3caefecde40bc07e2bf3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a14bcc6125921389dceb27e432bc7a489"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aaeafd5f3786a0bd215468714c1e743b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3425db69ef4e4927a82e99025c16294a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a631f8c0c9bceff4bef761eb7fd865686"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7b017a692367333d1035e276f252f46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5f3e4faca1d063ad73764571f898dc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a199581e11ebd49e1322b090484f3dd29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af1eda3afe49e91bf04d6e34a0e3be8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1a8221833cf3d29cd6435aed632dfcce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9da3b50de4d108b81264a22c5adacf05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afefeb492b3446d34e413556a805210b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8f6ad27911e2e711f665ae69c5b2cd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5400bc09082eab59bdfdbd61a06578f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad956f3db79c93a658cbccb41714e1542"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa524f33d3d2b294847c3929237947b20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0f1dc6ab5dccc96c5a4df37cc5bcb923"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0d00c75b42e46b3a7dd78f9a40324c33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3a3105d08231d5f2e53511bab46224c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a84e5356296be66aa930ec53118f5ef6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a492fae0605d06684297540bb9af319dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a49a398090bc1044038300ce246821a1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6482907b4c57873e197324f5cb66fd4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8baf97065d802063eb9bcdd1a066dc86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5fbc1479db5f4ff70a750cf02d58971b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa9c6c1a7b5380a99a536f4740f87dd59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae52296dff1f4879854f320d59f92574e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9cec088786b209989fe9e04e1be9636d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7db6a78bb6eedbea7f0525f1fe59de28"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2df3b432de50a9b9e8b486aa53e11cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3dd219b394b8186d1849ee595193268d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a52e948b4bffc16a3933d812dbc384833"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abf109580225cb949565c8223bceadd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acbf871a6ec0726bfe2746e761a278108"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a32068047cc7b37f1bed1830508891526"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6c08ed3db08fcfca0592c62cd6080b76"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab182b6a1d2348a86472001c92586717a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adf59f87645d301e9b56dd70aed350e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae91bc23bf56bb5f9c2e0ddb1fc7be75e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa6281ed3090b74167170c8f692688de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad432424d97021ae6c81e38130b1ec5d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6e97e093453fc053a5c82386927a0d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aad4b8cb9a4d882a48bc21510f0d1a938"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a245661fc96c9c4a9b898e1d98c8c6962"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a881ab05533f917737509402730668e4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a69dd8c7608ff0935a247f3aa07f98212"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a14cfd39cfc30682fa821ade3dd298426"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa117e0112fdc02a7a011cfb39dc596ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9827adb2cf787460578999e0484568fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5abbe8a9ee003c1379a921dbe2745b81"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1db5d836b83fc71602a7993616de5b42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a891abdb9079715cbcf85792e2b450652"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abd033569519fec65077ea983f6c75a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a46d045b35ad6b8c2ffe0c04684f97779"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9c91b774c3089c55df77cc3a42da72de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7e94e9ab356805c498f5fc2fba87e4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4734542212b5811d0511ea6b16f35168"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a120c131df35d78b3a56cb0f07decaf35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6fff4b4b1b5d4d37c9cf53d0e31c05dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:add22da50dd35a100548dde4c57ae89d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9a6bc66017eb7c132fd6e13ff0dcb540"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa78ce2bbe65cae8f3d60839467dbfc83"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aaa86b6903e41d2d2828e00b32f872375"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a369051e180246c66b20c93de5fecee8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae3af95ea62252012cf93a98167afef64"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab83f837cdd5bfcff537dae72a96d6fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:add47ebcd4a59304a25c71996aea2b38b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9258afcd4c6d8443c9130d8c9bf26442"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a23a4f3c387a2a3a035e97764e34277c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a102f37a09de1b0d4d78740a3c12902bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5f9c6094ae666c8e14907307d0481fac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aec7cf8e3927ee7d24f8b19d206ce3e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a733ef16d4eaaf8cce338320fa042f526"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afa7a0a639e2772ff2ced67d77be810c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5e66fe270ca921faeecd26735192d08b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aec82007c45313f59d24b304e35b3db6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a77cba79eef903eb3d758b4edbcc626ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a46f313720b601ca97a9c2a5158814bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a52cbff9d344ba4a1fe01d4da2c1f7ba2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a728153b62fa66e6ed1243e09144bfe8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a898305dc4cdb78a5fbed481250f6cd35"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abe34cf42d7c8515ecd15d11f4aeb399c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a94eb3bdf0e1c8c748c2e29dce048ace4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab242670b85e047e79bb297cdb192cc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a061891029598224370aae4cd18b78406"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4d4386cbb19dbc551e423992ecdd0d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8c09fbb75d2c2dea48926a540fc5cce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a01fa2d4db2c1b4ee5269a31e514f37ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abe311824d11bad4e6f93c8f94a721052"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af676ec7e9534bd6e6ac3072a2c0403f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad3d9cbf26cb5894fd6d9169dbe743417"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac7ce83f024515592cffac13ae5220f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac28b0a4861e6eab3e7621a7ed4eb5f62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9a7475b081b431ffa9915aac51c2d338"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5a38bd982292180692711b0ae296bb34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa1166f0056ce60553e825ae3cee4d5f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5e783a951642781b9e7b55db06a514b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afdba36f125621d775d471f0daf613df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad701d0d29baa4266ab4d33b090aa661c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad256fcf8c7f4d5a240fa47f0b56d50af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8f3bfacadfd6d2146d6ccd299dabc7aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa5baabb8e3a4aa6cbdcab419d743e747"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abccab9266ab13dbd806445af31ddbba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae9bdcb8ac91731109dc423d6ed476204"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa70ebe7b7898fe69ce24db803caa373e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8cbabc875597b3bed0ccdc0adb289fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a36e8f52330a21eeab3cc7c4e030f3583"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a83c4a275acf59f62b8387f389d0929d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acea2d8c53b441e24b6d60b090fda37c9"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
+<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>
+<tr class="separator:acea2d8c53b441e24b6d60b090fda37c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5980f7b42f4df041efebdc6ae242f686"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a5980f7b42f4df041efebdc6ae242f686"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memTemplParams" colspan="2">template&lt;typename T , typename... Rest&gt; </td></tr>
+<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>
+<tr class="separator:a2a0bcfb4df0a03357b4cbb8d9e89a3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a17955517b0d148f7ffdbffe8b46e41e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a872803f5667392efc3c8e5607bd453ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2a9ac8ebb69307ad4ec894ffa0523dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3170fdd696155a247ecd81d445c0e2e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52b301fd3adce20b51c4482cb52f1a38"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
+<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>
+<tr class="separator:a52b301fd3adce20b51c4482cb52f1a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1e8288eac7e909fdb58b6113d816763a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a51e8b95a429e11678ffa8b9fdc88351b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad69ffa576a596b9eb20ab6a41420c541"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92c91193007aa49f4732d6dba5397f8d"><td class="memTemplParams" colspan="2">template&lt;typename CopyFunc &gt; </td></tr>
+<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>
+<tr class="separator:a92c91193007aa49f4732d6dba5397f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memTemplParams" colspan="2">template&lt;typename SrcTensorHandleType , typename DstTensorHandleType , typename DescriptorType &gt; </td></tr>
+<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>
+<tr class="separator:afb5b53a8b0c01d4f27830bef0f25ca09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a27ecdfeeea12de313f2b97d309a35d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3ca05ac77af0a0444ff34c1319094f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af464d406b22309a891ed0aa3008a7953"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4e9a59f936f3d2050a17597d22825f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af457790132251cde6545072d879c7684"><td class="memTemplParams" colspan="2">template&lt;typename F &gt; </td></tr>
+<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>
+<tr class="separator:af457790132251cde6545072d879c7684"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab562537b5c1ef1e6cde9db9f5fa322bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adfe10e7086e3e3b98927cf84aee03dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac86fc56b9a27576bfe930a7012a402d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1391582cd6e145b67c98f3410667968e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a42ef3cee193102dc7755193579209cca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aefc82adf365ff14b0095dafdd2df6afc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab80423b306d8e0436b9a316922911d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad6cb42ca5150bb96c151e4a4e6557d70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a67957983877fb2c720a2ad7f88c45a3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7782f0809076f14363eacb4a38964b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a46efae0191388fd33db4e95c5d79e2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a37f6946bfb7a9c7d64881b7a2e13945f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acd1146eb56f1473a0bf4561bcc1d1529"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5634af98b603236c6748adb5ac92e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4ec5dfcb3e419ddce1fcb3b799f312e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a75045734c29d7d6635342c05adbc151b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6a0edac987d58b405636df2eb2ee525d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8874961260f35da85229554f92e16ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a00ef2c55913f952924a3e23556655285"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acf69869c2242e5e3741c4f9252099393"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a79d362f0c6e04d51807e0d81b5b05f3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aef334cdb24000c330f4d2e5f1b384784"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a90ab88fe4c7aa9466c4653404a6b2213"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a553706c6338ffc52b0d916859f642587"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa1fff3c5bdebee27ad33aacc6d110d32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8c04c8e796a4fbec706df42ed9c27e4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a674a280a55c3760374a05ee24e9e3e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a144c2e243a255715f309999077ed1792"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adcf7b7d939bac1cfaeb333c7b3175bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a26c25df9e2271333ab4d4ef71db41dca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8a21bb33f7f054ce7b48a8c7df9e6d4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae58d1f4437a779274037bc86efac9e26"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5fb7fe07abfb2373103d842b47a24726"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9c1b478e30a1e8a4ecac874cf15f13d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af5bb7a834a74983cbbc249785d0c392b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a95b187d3c6b7b46f4fbdc60be69fc02c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3f6f9f0d3567ae04b49ea88727845900"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6d85d2806d0a90140832ad8113c1d350"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abc6f7e5fe77e5aed3f7842755dd34073"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a534b28fd4b345bbc938d055ff5b8970f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5f81bc4e5533cfe99932865bd102735c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3ac8a60f837b19b20987e4fd238ce0cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8c9fec997dbb5db4cdb433c36d075782"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a157e0508f6d6d08e3ca4cf6c661242e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3bbbf958387c788549b0d8481232875f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a719ea81939d6a25f8636b52c59165d66"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1c3a39fbecb45be0bb15dd665c9be61d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a73447f827b995cf90d4029151514b4ba"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a73447f827b995cf90d4029151514b4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6d4bdf4368a1422943f8f2b1740ec491"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a460e01ad4cd0bfa6bde4eccaf0e77220"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a46747c3d0b99968be0b37d74bc9687dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2192b5ff59aacdb27f8b0238323915dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aff5bee79757341daf750c7dd7c123a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3a34a305e5187f3a3c67030d3bebbdb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aad5d4888304a57fb22c4608dc5d94dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afc773aec6f845adc0cc547ce475dfe3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a46495807633a01d826851e1cb498f071"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:afc541536011ccfb06853c45bfaba2dfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a61d1f39297fec6e3062e4047dc5f236e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6c856ceba1828fe201b2b6c032d70371"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a00623eeb8f77dac6dbbc1395b5270dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8a219633e750d6daffcef3b641fa11f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af64bb043263ba7d09c98fd88da60726d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a116d88067bf98ce9858ab73e68f605f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a168ebb908e1ee4bac24cb7992510de73"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acefede7cc57c71ea4cfe1c888bb413e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae0ae21bef03ed19f252c72c660e571a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a304243ccb52986da06388dc57deae88f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3a62359fc5ebfe9628871c0ba79fb37c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0b7897a2a04016aa7fa24e2a1d10e944"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad536149438b0481b7278ad741e18fb5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aea722abe239545030f4c6fe4e083816f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae838df3960d2b5d18d73ed2a07aee917"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a9e06cc2a2ac8b88fc72972695a17910f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8d2ea79addd8ef64be2ca0dad3408f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab81dd6d40850f8fea025ee7ce51f86d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ab81159ebfa638af1b91fe1e8c5de1955"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a38bdbed2a1e28ab15cac0cc0f42c3fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2ec6297db90d1d4c258c13d2d72b13d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a39209c0c078e83227222eb885317c2c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a70650f6b1d3b8511fcdb989ca769cdbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1f07655db8ad7f2738bb0d3d9e2316cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a188adc104b16db3dc23ed2c5ff06cbb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae83632e641892ad2de78f316376f6bd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4d1e35c8bbe48e99dd522ac0f75f77d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a430021076042c8157a926a3bb3a37152"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a552d65f4e0a6c9e7c7796e77590063e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa7d1b5e38aa8cb731519ff12e2a73350"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a0a223c0997e3f7faa373ed55f954252b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4077a9771ba9c551f4ce61863f65e798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab29257da888af2c4971db1344d8a526c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af6d2d40482240def4614deb694933d1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aab5ea316b3decb05430323d847e3a773"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a65c83c74bdbd66cdd547d331998952eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac71d08bf1257807c112b4d019802acc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a73c15f02c46f64c1adf0fafb4c7c2cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abc73c3c9a09f91c22c64d7c166e9be4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2b8555526752015115fa7fa00d88542b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1351e01f9fb983937caf79e353142b41"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a1351e01f9fb983937caf79e353142b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad9aa8d49d42ada3f757290033af39857"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a01d1e745f360ccd0b655214645bcef32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab40e30cea5a328a3c35aa32f9b7db1c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae7d50846b2769f81521af24d063bc093"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5baedac4819656984488bc1fe5fe1505"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6a2e058d934e9d784eab57ee7121d69c"><td class="memTemplParams" colspan="2">template&lt;DataType ArmnnType&gt; </td></tr>
+<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>
+<tr class="separator:a6a2e058d934e9d784eab57ee7121d69c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a87b99791ccf8793961db67ea19eb6fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3d504240723912bf9c76ff3afeaa25c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad78d822be14a8d585cd038cf0e73cd7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abcd0d843d5736b78740ae73249b6b977"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a09a7cd515c3b495e61b2a5116bf6a335"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a47d136a5519331dee24f5e01b206ae7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a37c36bbf668cd8a0d7dcd731c9b591d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad05c0670c947d35d39b3b0217e9975cf"><td class="memTemplParams" colspan="2">template&lt;typename QueueDescriptorType &gt; </td></tr>
+<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>
+<tr class="separator:ad05c0670c947d35d39b3b0217e9975cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a93e7b76d19b33076b2a4eae44014d5ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05323af66b9f762e269a27562a2bbdd0"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a05323af66b9f762e269a27562a2bbdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a91332212b6a2cc9c0ea32af03c600b4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ad10d72a6f8859949bbe6134c638ce171"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a374120de442fe42c26536bb4f1e2a5a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adc251e65d99405496d503811589e9a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac70a495c61526a0500b33b23db86ca27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8746512fab5ec10c2c57800c66311ba7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1deafe1b2777bcaadefe2371b3ebbb27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af98115cd07776d3fa8424434d2a7a897"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5aae369ef847a00062925cea8e9be9c4"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a5aae369ef847a00062925cea8e9be9c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a43791bdad23b9c3dd62711c03f793881"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3b0ab9518e3fd6a0447c174df57a313c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a26abbe393a88835dd569523bec69719b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1121718a486db835afa99328650e7e89"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac2167b3a09fab7c9b58af461bd990c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acc771f233bb7884932260ba353118b46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7c1cb9cf0678f74b1dcfff310d1475fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a1545cb162c5a64d75d9c0c05e8ea387c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adb59a379c467b6d48874e946183b4d21"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:adb59a379c467b6d48874e946183b4d21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab023d9a7687e35c0f108458a094c1f56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acae7e910f899ae67340c9ce29e406a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae8ed5c640761fb6744aec0ee16388417"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a2748f45e58b1c612d473043f711d1434"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abf6aad7bc221f8ad22b4d99cd020373b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac8c641d4a69c9a85c487cfbc7ea4d73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae8dcbb74cf0c855724f12833a55a5684"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae76ce23fa9fc18e56448d52b37dd3f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56867cc5245724ab56953604b1eec9ee"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a56867cc5245724ab56953604b1eec9ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a363da7c8d642ea382e3bd2f1c6283d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6fcd01a9cdee158d3022ad089c27c078"><td class="memTemplParams" colspan="2">template&lt;&gt; </td></tr>
+<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>
+<tr class="separator:a6fcd01a9cdee158d3022ad089c27c078"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:ad34d1d5b1ca8f52dc296ecf52ba20c8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a66004b2326f8ccb1faa71d5efa186633"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac3d98d09064176b259e8a9038b06699d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac52e04c0e349e25bcdaa72c27395ef8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a869f740e9c2fcb8642350c6e3d0b3742"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ae86f1ca23eaa764da9e589cc8e39a969"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a165ae372a7f67cad64ef3395d30122ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28e115f5d28500324b53fae9e6c00b77"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a28e115f5d28500324b53fae9e6c00b77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a37fe5e5b5f650430dc0e71d69977bebd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a09fc687543b371ddab280203dc989bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1b165f49b29968defb57e2d9b8628b9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a7e27cbebab8cde65c84d7a00efa025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a68b05cecb5ebbbc3b8d1fd94a66df4af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="memdesc:ae2e93e304cf516841c521e3eaee025cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the Pooling2d operation. <a href="#ae2e93e304cf516841c521e3eaee025cd">More...</a><br /></td></tr>
+<tr class="separator:ae2e93e304cf516841c521e3eaee025cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aa1ca65b3ba7f7c760eb3d5563c12864e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ab3c0b7e1a78b1b98c24934221f36a7c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="memdesc:a93d269806f34407695dc10f510001c30"><td class="mdescLeft">&#160;</td><td class="mdescRight">float32 helpers <a href="#a93d269806f34407695dc10f510001c30">More...</a><br /></td></tr>
+<tr class="separator:a93d269806f34407695dc10f510001c30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:a2187ea15b1ae8c323a0cc5c211fc43d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memTemplParams" colspan="2">template&lt;typename DataType , typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:a2c0b2e5bd1b03aec10473a201f57f859"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a691846a9eee59b0cd5b22fb5f674e007"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:a691846a9eee59b0cd5b22fb5f674e007"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:ab5f0afc1e37fd100843ecd55d8f284c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a084b0ce273bef78aa314bd97fc574b84"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:a084b0ce273bef78aa314bd97fc574b84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memTemplParams" colspan="2">template&lt;typename PayloadType &gt; </td></tr>
+<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>
+<tr class="separator:ab98e77207c3d676b0b9ffa67357dbc6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4144d7535639c617fca0d095379493f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="memdesc:a4144d7535639c617fca0d095379493f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">u8 helpers <a href="#a4144d7535639c617fca0d095379493f0">More...</a><br /></td></tr>
+<tr class="separator:a4144d7535639c617fca0d095379493f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1204727d8ce3ee1e60daf08079eb892e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<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>
+<tr class="separator:a1204727d8ce3ee1e60daf08079eb892e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:abbbe4a59b72fba606f21e7c24dcbd8c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a25dc224be48103343302b5a6fd588fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a044ea0cc993d4d1fbe4ec877b17b8d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:aa999ff2585ad75b95954a9323f63c32b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:adafb0fd0a3f6435c2bdf41f971761ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a4a180e425d4c19b2cdea4ce5760180e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a5e1dc69443b64ad16b669388a6023f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:ac4d30f99e7fa46fe375e925a6ad537be"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a427c3d26d05b518b1ace407035f5920e"><td class="memTemplParams" colspan="2">template&lt;typename DataType &gt; </td></tr>
+<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>
+<tr class="separator:a427c3d26d05b518b1ace407035f5920e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6ef2dcac2ec0683d52df1b051404e7d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a86d7a7168ac00b75b4971f9aad623698"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:affec174d91f234497dfbceba5e251dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:af487cc4568faf50403f12ed1c7a70a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a932b4856d89c58865e1f39ec5ab6b841"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a40c8a268a9dc9dc910e348534d479f7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a8022a6869bffa6233fec784a471c1680"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a3c51506c471a4513dcc3364514d75f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<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>
+<tr class="separator:abdcd184ed3bd648bb31d385040cafd5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<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>
+<tr class="separator:a602ddc6408c3347ba4c1eba623003984"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a43ecd194778b7653578044060ba8695e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a41794552ff67b0dad16de60f9b8e7d7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:aacc0d11e271ebbfcff9d613dd17604aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a6ce7e56eb10e440463f09eee8f213adc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a680b729be51e88d93f2cbbdfeb5eaf4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a19994153bdbd7710f0af3973403bc4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a09bdfaa922d72ce0d9ec014dfa8f8c95"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:acd7f8820d124166a38c95bc8ad38811b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1465480794787d2278d3f0d2e6d887b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<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>
+<tr class="separator:a1a9a6dea47de10df8e3c76dd45df56fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Copyright (c) 2020 ARM Limited. </p>
+<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>
+<p>SPDX-License-Identifier: MIT</p>
+<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>
+<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
+<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>
+<p>Only a subset of the optional features are implemented that we intend to use in ArmNN. There are two distinct implementations here:</p>
+<p>1, for normal constructable/destructable types and reference types 2, for reference types The std::optional features we support are:</p>
+<ul>
+<li>has_value() and operator bool() to tell if the optional has a value</li>
+<li>value() returns a reference to the held object </li>
+</ul>
+</div><h2 class="groupheader">Typedef Documentation</h2>
+<a id="a1854d9cda81304325664363c1fd0fb27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1854d9cda81304325664363c1fd0fb27">&#9670;&nbsp;</a></span>BackendIdSet</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac858d91eedb7b4dba1bcd0aa760ab510"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac858d91eedb7b4dba1bcd0aa760ab510">&#9670;&nbsp;</a></span>BackendIdVector</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9173495a61a0092b5f38b855f02c3585"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9173495a61a0092b5f38b855f02c3585">&#9670;&nbsp;</a></span>BackendsMap</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a20d2055c37fedf3f39db9facf2c8c697"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a20d2055c37fedf3f39db9facf2c8c697">&#9670;&nbsp;</a></span>BaseFloat32ComparisonWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9cbc0957cf0637cc3fd9702086117cc0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cbc0957cf0637cc3fd9702086117cc0">&#9670;&nbsp;</a></span>BaseUint8ComparisonWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a280670a263dc4fd40491f6d0a2737f44"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a280670a263dc4fd40491f6d0a2737f44">&#9670;&nbsp;</a></span>BindingPointInfo</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab539ef5a0c152536da71c8fcc065efb5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab539ef5a0c152536da71c8fcc065efb5">&#9670;&nbsp;</a></span>BooleanWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a77e1ccec3acbb3dadba3fd4939508b32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77e1ccec3acbb3dadba3fd4939508b32">&#9670;&nbsp;</a></span>ClGreaterFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a569ba573145851e753623be817b98e9b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a569ba573145851e753623be817b98e9b">&#9670;&nbsp;</a></span>ClGreaterUint8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a689de00cadd81b4e35b7448e4fbbc034"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a689de00cadd81b4e35b7448e4fbbc034">&#9670;&nbsp;</a></span>CompiledBlobDeleter</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a689de00cadd81b4e35b7448e4fbbc034">CompiledBlobDeleter</a> = std::function&lt;void(const void*)&gt;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a7b4ac337ed307e0739e628d5b9883856"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b4ac337ed307e0739e628d5b9883856">&#9670;&nbsp;</a></span>CompiledBlobPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a7863c179ff92feec660c48ab7b95ae55"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7863c179ff92feec660c48ab7b95ae55">&#9670;&nbsp;</a></span>ConcatDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac6e86c1def7f674d3c4cb7f577874aa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac6e86c1def7f674d3c4cb7f577874aa6">&#9670;&nbsp;</a></span>Coordinates</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a15f3ad9b5e4e3d46b0a6dda246a7bc28"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15f3ad9b5e4e3d46b0a6dda246a7bc28">&#9670;&nbsp;</a></span>DebugCallbackFunction</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Define the type of callback for the Debug layer to call. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">guid</td><td>- guid of layer connected to the input of the Debug layer </td></tr>
+ <tr><td class="paramname">slotIndex</td><td>- index of the output slot connected to the input of the Debug layer </td></tr>
+ <tr><td class="paramname">tensorHandle</td><td>- TensorHandle for the input tensor to the Debug layer </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<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>
+
+</div>
+</div>
+<a id="a3647f60510bc8ddaced01c51b0ee8714"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3647f60510bc8ddaced01c51b0ee8714">&#9670;&nbsp;</a></span>DepthToSpaceDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a293695a94110c1a0eb77e29c22dce79a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a293695a94110c1a0eb77e29c22dce79a">&#9670;&nbsp;</a></span>Dimensions</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a754d43dc24a0fe36ecb3044d8f13a413"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a754d43dc24a0fe36ecb3044d8f13a413">&#9670;&nbsp;</a></span>DynamicBackendPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a947e07902b1b5d98b57eeae34053146b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a947e07902b1b5d98b57eeae34053146b">&#9670;&nbsp;</a></span>FactoryId</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a827d59b5a779a8089017802172817f3c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a827d59b5a779a8089017802172817f3c">&#9670;&nbsp;</a></span>Float16ToFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6486138451112140f98516c0bee18615"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6486138451112140f98516c0bee18615">&#9670;&nbsp;</a></span>Float32ToFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a0493144f15b35804a133c9aa0b63fcc9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0493144f15b35804a133c9aa0b63fcc9">&#9670;&nbsp;</a></span>Float32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="abaedcfd0ae08790c03bfe8ba7586dd84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abaedcfd0ae08790c03bfe8ba7586dd84">&#9670;&nbsp;</a></span>FloatWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a0f38fa92b2468d5378258a2b074c1a31"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f38fa92b2468d5378258a2b074c1a31">&#9670;&nbsp;</a></span>Half</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> = half_float::half</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a65a0ad0a7b807e70295481a7b9cb93ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65a0ad0a7b807e70295481a7b9cb93ac">&#9670;&nbsp;</a></span>IBackendContextUniquePtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ade0af9dacaa52cafdd701bef2e901c77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ade0af9dacaa52cafdd701bef2e901c77">&#9670;&nbsp;</a></span>IBackendInternalUniquePtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ae18caa7ee6287aa7f8c2a5ce6bc92382"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae18caa7ee6287aa7f8c2a5ce6bc92382">&#9670;&nbsp;</a></span>IBackendSharedPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a5a665483e56a688e9f8180accdf72d80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a665483e56a688e9f8180accdf72d80">&#9670;&nbsp;</a></span>IBackendUniquePtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a2d3a708a26ac6d77bf8f15506e89a25a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2d3a708a26ac6d77bf8f15506e89a25a">&#9670;&nbsp;</a></span>IGpuAccTunedParametersPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The following API is replaced by the backend options API. </p>
+
+<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>
+
+</div>
+</div>
+<a id="a11fa919c11fe46aad613b2e960fcfe90"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a11fa919c11fe46aad613b2e960fcfe90">&#9670;&nbsp;</a></span>ILayerSupportSharedPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a12bff6d51d63dac1375c89bc8415dc46"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a12bff6d51d63dac1375c89bc8415dc46">&#9670;&nbsp;</a></span>IMemoryManagerUniquePtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ace74f6f9feb95a964a49d79458232703"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ace74f6f9feb95a964a49d79458232703">&#9670;&nbsp;</a></span>INetworkPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a41119e261eec9343888d2ceab1e4999a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41119e261eec9343888d2ceab1e4999a">&#9670;&nbsp;</a></span>INetworkQuantizerPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a2231ac018fe2c465f2d42fef597d67e7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2231ac018fe2c465f2d42fef597d67e7">&#9670;&nbsp;</a></span>InputQueueDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aa01bce88f89975a5a031db4cc8861527"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa01bce88f89975a5a031db4cc8861527">&#9670;&nbsp;</a></span>InputTensors</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a86e4b37c7c48cf5fbc5e99ccc6fd50b7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86e4b37c7c48cf5fbc5e99ccc6fd50b7">&#9670;&nbsp;</a></span>instead</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a3e4b88b993c90b274e0bd268c35d798e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e4b88b993c90b274e0bd268c35d798e">&#9670;&nbsp;</a></span>Int32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a674efcf6cbdb9e831d653ff0e821fb38"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a674efcf6cbdb9e831d653ff0e821fb38">&#9670;&nbsp;</a></span>IOptimizedNetworkPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a150468a02bd7b2d2d061c4aaaee939f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a150468a02bd7b2d2d061c4aaaee939f0">&#9670;&nbsp;</a></span>IRuntimePtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab8cf8f9fb6792e654c2d8d8382f6f01b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab8cf8f9fb6792e654c2d8d8382f6f01b">&#9670;&nbsp;</a></span>LayerBindingId</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a> = int</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Type of identifiers for bindable layers (inputs, outputs). </p>
+
+<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>
+
+</div>
+</div>
+<a id="afad4088a9a058114ee5f87246f87bf49"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afad4088a9a058114ee5f87246f87bf49">&#9670;&nbsp;</a></span>LayerGuid</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Define LayerGuid type. </p>
+
+<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>
+
+</div>
+</div>
+<a id="a419086ecb4dc9d0f9e5d8933c87e2ea2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a419086ecb4dc9d0f9e5d8933c87e2ea2">&#9670;&nbsp;</a></span>LayerPriority</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a419086ecb4dc9d0f9e5d8933c87e2ea2">LayerPriority</a> = unsigned int</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6b5db6cc9aad8ec0ac7b14f859aacdab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b5db6cc9aad8ec0ac7b14f859aacdab">&#9670;&nbsp;</a></span>LayerTypeOf</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac14705405cbcdd580df613de6766fe65"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac14705405cbcdd580df613de6766fe65">&#9670;&nbsp;</a></span>LogSoftmaxDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a5b05f3b7208ec7cea3338e30057c0bac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b05f3b7208ec7cea3338e30057c0bac">&#9670;&nbsp;</a></span>MemorySourceFlags</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> = unsigned int</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a003d213dd28b0b8c0f26fbf268ccb975"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a003d213dd28b0b8c0f26fbf268ccb975">&#9670;&nbsp;</a></span>MergerDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>MergerDescriptor is deprecated, use ConcatDescriptor instead. </p>
+
+<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>
+
+</div>
+</div>
+<a id="a308ba160745ba35e1de8d698d0139eb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a308ba160745ba35e1de8d698d0139eb4">&#9670;&nbsp;</a></span>MergerQueueDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a997e96288bdb106c922202e3f33d5d7b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a997e96288bdb106c922202e3f33d5d7b">&#9670;&nbsp;</a></span>MinMaxRange</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a997e96288bdb106c922202e3f33d5d7b">MinMaxRange</a> = std::pair&lt;float, float&gt;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a061aafb62b3769f55369845c3990ec7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a061aafb62b3769f55369845c3990ec7a">&#9670;&nbsp;</a></span>MinMaxRangeMap</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac757baefa4b72b54c38f713f86418f8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac757baefa4b72b54c38f713f86418f8a">&#9670;&nbsp;</a></span>MinMaxRanges</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a18b8b3bd9e39c84e36ab560978ab64c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a18b8b3bd9e39c84e36ab560978ab64c7">&#9670;&nbsp;</a></span>NeonGreaterFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9b0bb8592cd6e6cb693d305825fae448"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b0bb8592cd6e6cb693d305825fae448">&#9670;&nbsp;</a></span>NeonGreaterUint8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a83015160d8c67d5d77735eb0d4033d9a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a83015160d8c67d5d77735eb0d4033d9a">&#9670;&nbsp;</a></span>NetworkId</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a83015160d8c67d5d77735eb0d4033d9a">NetworkId</a> = int</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9b8e5a95f8c061bbbcdb036915dcb61a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b8e5a95f8c061bbbcdb036915dcb61a">&#9670;&nbsp;</a></span>OffsetScalePair</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#a9b8e5a95f8c061bbbcdb036915dcb61a">OffsetScalePair</a> = std::pair&lt;float, int&gt;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a37a1a6b381ccc76df203fee023234996"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37a1a6b381ccc76df203fee023234996">&#9670;&nbsp;</a></span>OutputQueueDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a8f091a512915d1cb29a4ebf13dfc53ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f091a512915d1cb29a4ebf13dfc53ea">&#9670;&nbsp;</a></span>OutputTensors</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a8c42c6647e31ebe525aeba878d133e45"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c42c6647e31ebe525aeba878d133e45">&#9670;&nbsp;</a></span>ParameterStringifyFunction</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ae73bf7cb78cc552c5511431b0d583f14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae73bf7cb78cc552c5511431b0d583f14">&#9670;&nbsp;</a></span>PreCompiledObjectDeleter</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">using <a class="el" href="namespacearmnn.xhtml#ae73bf7cb78cc552c5511431b0d583f14">PreCompiledObjectDeleter</a> = std::function&lt;void(const void*)&gt;</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ae3bff3986cb5a50637c9b3238d821f54"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3bff3986cb5a50637c9b3238d821f54">&#9670;&nbsp;</a></span>PreCompiledObjectPtr</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a7a9d365fbb868d53e67c4cdfdbf9cf7e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a9d365fbb868d53e67c4cdfdbf9cf7e">&#9670;&nbsp;</a></span>RefAdditionWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab51075960a6cf82a8bb6ee81c9efa97d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab51075960a6cf82a8bb6ee81c9efa97d">&#9670;&nbsp;</a></span>RefDebugBFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac8d7aa6e66fb59a839833b160f619228"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac8d7aa6e66fb59a839833b160f619228">&#9670;&nbsp;</a></span>RefDebugFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad194629946077375dcce05b2449334c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad194629946077375dcce05b2449334c8">&#9670;&nbsp;</a></span>RefDebugFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a44ab486f2a7728d75bbf52ffa1025ab5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a44ab486f2a7728d75bbf52ffa1025ab5">&#9670;&nbsp;</a></span>RefDebugQAsymmS8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a0c1df21c99a094d2f078ca90047a73ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c1df21c99a094d2f078ca90047a73ff">&#9670;&nbsp;</a></span>RefDebugQAsymmU8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ae6d1d064ec7d33b2cc5bcc8afafbe193"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae6d1d064ec7d33b2cc5bcc8afafbe193">&#9670;&nbsp;</a></span>RefDebugQSymmS16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad607a96fafba334ba5bde946947dd0af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad607a96fafba334ba5bde946947dd0af">&#9670;&nbsp;</a></span>RefDebugQSymmS8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a2b2b0a60cbb51bf3eb9bd2899aee2c86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b2b0a60cbb51bf3eb9bd2899aee2c86">&#9670;&nbsp;</a></span>RefDebugSigned32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a5c3a2aa3adc87d79164914b63f27dc25"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c3a2aa3adc87d79164914b63f27dc25">&#9670;&nbsp;</a></span>RefDivisionWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a044df856403d0af13189f49bcfb209dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a044df856403d0af13189f49bcfb209dd">&#9670;&nbsp;</a></span>RefMaximumWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aa8c69a3741eafef59e51564511403fb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa8c69a3741eafef59e51564511403fb8">&#9670;&nbsp;</a></span>RefMinimumWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aabff736a576814611f65ce1a14600a17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aabff736a576814611f65ce1a14600a17">&#9670;&nbsp;</a></span>RefMultiplicationWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="af0b5fb43c9e4ebee9928c3cc619a6c3f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af0b5fb43c9e4ebee9928c3cc619a6c3f">&#9670;&nbsp;</a></span>RefPadBFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9e2582f828ee36a6bce3e1abdd660bc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9e2582f828ee36a6bce3e1abdd660bc5">&#9670;&nbsp;</a></span>RefPadFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aef8145fff0dca42e42786745414fec96"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef8145fff0dca42e42786745414fec96">&#9670;&nbsp;</a></span>RefPadFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="abc074517cf18f4e0827faca852df7bd9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc074517cf18f4e0827faca852df7bd9">&#9670;&nbsp;</a></span>RefPadQAsymm8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="acc8fc2b1c708fd1c7af0d04e004e8516"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc8fc2b1c708fd1c7af0d04e004e8516">&#9670;&nbsp;</a></span>RefPadQSymm16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aed5e6ff8fdf785380ed4c8ca21702da3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aed5e6ff8fdf785380ed4c8ca21702da3">&#9670;&nbsp;</a></span>RefPermuteBFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad1c0fb6bfa580b04574ab56971b6cbc6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1c0fb6bfa580b04574ab56971b6cbc6">&#9670;&nbsp;</a></span>RefPermuteFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a54c3f7c7b9909e828a084f68dc78a031"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54c3f7c7b9909e828a084f68dc78a031">&#9670;&nbsp;</a></span>RefPermuteFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a50ffe5068ecb2fbf7f73b30ef0d753f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a50ffe5068ecb2fbf7f73b30ef0d753f8">&#9670;&nbsp;</a></span>RefPermuteQAsymm8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6ffed93fad525ce1d534cec2cdaee6bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6ffed93fad525ce1d534cec2cdaee6bd">&#9670;&nbsp;</a></span>RefPermuteQSymm16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a01853f5d02495c04636016c1e3e7c144"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a01853f5d02495c04636016c1e3e7c144">&#9670;&nbsp;</a></span>RefSubtractionWorkload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a031a365fb37880a7f015dab159877a72"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a031a365fb37880a7f015dab159877a72">&#9670;&nbsp;</a></span>RefTransposeBFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aefcfe4efab61267262d1e02cb8af739d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aefcfe4efab61267262d1e02cb8af739d">&#9670;&nbsp;</a></span>RefTransposeFloat16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad67165b4639bd5e50e5bc4538d226b35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad67165b4639bd5e50e5bc4538d226b35">&#9670;&nbsp;</a></span>RefTransposeFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a1d13693cba12d3e406454b852527fb37"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1d13693cba12d3e406454b852527fb37">&#9670;&nbsp;</a></span>RefTransposeQAsymm8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a4d9e736b0f2d5f6d66ea0a798366935c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4d9e736b0f2d5f6d66ea0a798366935c">&#9670;&nbsp;</a></span>RefTransposeQSymm16Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a0743ed5e860c316a20b68ca96301b411"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0743ed5e860c316a20b68ca96301b411">&#9670;&nbsp;</a></span>ResolveType</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a60291543fe872b795e71e05bcd835fd1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60291543fe872b795e71e05bcd835fd1">&#9670;&nbsp;</a></span>SplitterDescriptor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a02847c99a2acae3b267615479f93ab55"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a02847c99a2acae3b267615479f93ab55">&#9670;&nbsp;</a></span>supported</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9eb69ebdaf4ceb8014e7c8a540266100"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9eb69ebdaf4ceb8014e7c8a540266100">&#9670;&nbsp;</a></span>TContainer</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6d4fbf927a9d8e68cab1d7965c7dbc44"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6d4fbf927a9d8e68cab1d7965c7dbc44">&#9670;&nbsp;</a></span>Uint8ToFloat32Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad4d53881107428c301d43b5aad16bfe0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4d53881107428c301d43b5aad16bfe0">&#9670;&nbsp;</a></span>Uint8Workload</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a15f53f26b8495b51d0bba3d1bc4efc80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a15f53f26b8495b51d0bba3d1bc4efc80">&#9670;&nbsp;</a></span>WorkloadQueue</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a56297e0f7b215eea46c818cb7528d9ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56297e0f7b215eea46c818cb7528d9ea">&#9670;&nbsp;</a></span>ActivationFunction</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"></a>Sigmoid&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"></a>TanH&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"></a>Linear&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa3d90c0a5ab3fcf8e6f6608cb3d3a1559"></a>ReLu&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaabc5a0f0d6e7cf7fca73299dcd46c0f0d"></a>BoundedReLu&#160;</td><td class="fielddoc"><p>min(a, max(b, input)) ReLu1 &amp; ReLu6. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"></a>SoftReLu&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"></a>LeakyReLu&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"></a>Square&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d"></a>Elu&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186"></a>HardSwish&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaae77f3ad25595e35b327334d89410054">armnn::ActivationFunction::Sqrt</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaacb7667f5ec2f6e8a5943b781ba6c2735">armnn::ActivationFunction::LeakyReLu</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa21eebb164e4b8b9bcf64fdb4d8d5dff4">armnn::ActivationFunction::Sigmoid</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa6bba7052636d1740303b1b2ef3b53fef">armnn::ActivationFunction::SoftReLu</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaed67cf7d54c570e4c4891800f085f41d">armnn::ActivationFunction::Elu</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaaceb46ca115d05c51aa5a16a8867c3304">armnn::ActivationFunction::Square</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa32a843da6ea40ab3b17a3421ccdf671b">armnn::ActivationFunction::Linear</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa0877e5b3fbe9d7569df6399609ed0186">armnn::ActivationFunction::HardSwish</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa23b68da1de2b77d74da9da2635722a3e">armnn::ActivationFunction::TanH</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae7e8cbf71db6a490789ca6dcaa8deeae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7e8cbf71db6a490789ca6dcaa8deeae">&#9670;&nbsp;</a></span>ArgMinMaxFunction</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"></a>Min&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4dc0adc6737b5944e7671bee71788407"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4dc0adc6737b5944e7671bee71788407">&#9670;&nbsp;</a></span>BoostLogSeverityMapping</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"></a>trace&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407aad42f6697b035b7580e4fef93be20b4d"></a>debug&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"></a>info&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"></a>warning&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"></a>error&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"></a>fatal&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a04a75036e9d520bb983c5ed03b8d0182">armnn::BoostLogSeverityMapping::trace</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acb5e100e5a9a3e7f6d1fd97512215282">armnn::BoostLogSeverityMapping::error</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407a7b83d3f08fa392b79e3f553b585971cd">armnn::BoostLogSeverityMapping::warning</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407adf6402fd9ecc60f5a2159fdf45711cd4">armnn::BoostLogSeverityMapping::fatal</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2d299363c9fc33334c571fa29ca4f58c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2d299363c9fc33334c571fa29ca4f58c">&#9670;&nbsp;</a></span>ComparisonOperation</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"></a>Equal&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca8768a6821cd735aea4f5b0df88c1fc6a"></a>Greater&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"></a>GreaterOrEqual&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"></a>Less&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"></a>LessOrEqual&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"></a>NotEqual&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caf5f286e73bda105e538310b3190f75c5">armnn::ComparisonOperation::Equal</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca1cfdf0e8d0c87a228c1f40d9bee7888b">armnn::ComparisonOperation::Less</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca19bb0af2c3c530538cb41aff7f235b96">armnn::ComparisonOperation::NotEqual</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58caa4cbdbb6070a5abb35fc95ecf1e22c14">armnn::ComparisonOperation::LessOrEqual</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937"><div class="ttname"><a href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58ca6f2f0aefb3d22da0f3839453add5f937">armnn::ComparisonOperation::GreaterOrEqual</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae2f04a162585c0a5222a537efd5456ae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae2f04a162585c0a5222a537efd5456ae">&#9670;&nbsp;</a></span>Compute</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"></a>CpuRef&#160;</td><td class="fielddoc"><p>CPU Execution: Reference C++ kernels. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"></a>CpuAcc&#160;</td><td class="fielddoc"><p>CPU Execution: NEON: ArmCompute. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"></a>GpuAcc&#160;</td><td class="fielddoc"><p>GPU Execution: OpenCL: ArmCompute. </p>
+</td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad1d5cce2d9e9a5d61c243e5c989112e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1d5cce2d9e9a5d61c243e5c989112e0">&#9670;&nbsp;</a></span>DataLayout</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"></a>NCHW&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"></a>NHWC&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad8ed01ff3ff33333d8e19db4d2818bb6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad8ed01ff3ff33333d8e19db4d2818bb6">&#9670;&nbsp;</a></span>DataType</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"></a>Float16&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"></a>Float32&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"></a>QAsymmU8&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"></a>Signed32&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b"></a>Boolean&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"></a>QSymmS16&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"></a>QuantizedSymm8PerAxis&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"></a>QSymmS8&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"></a>QAsymmS8&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"></a>BFloat16&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"></a>QuantisedAsymm8&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"></a>QuantisedSymm16&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
+<div class="ttc" id="_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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a09238d8d078e53edec6700d0f74ce91c">armnn::DataType::QuantisedAsymm8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a80292d3a80d2993040e48c32b7fa7f82">armnn::DataType::QuantisedSymm16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::DataType::QSymmS8</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aff209afc1dc598da399e3e78617ce016"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aff209afc1dc598da399e3e78617ce016">&#9670;&nbsp;</a></span>EdgeStrategy</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aff209afc1dc598da399e3e78617ce016aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
+<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>
+</td></tr>
+<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>
+</td></tr>
+<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>
+<p>Copy contents from source backend tensor to destination backend tensor. </p>
+</td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852"><div class="ttname"><a href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016ac366da48cc11956ae377a77751936852">armnn::EdgeStrategy::CopyToTarget</a></div><div class="ttdoc">Source backends tensor data can be exported to destination backend tensor without copy...</div></div>
+<div class="ttc" id="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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a34eaed09302a4d7bfe930c13a7673e0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a34eaed09302a4d7bfe930c13a7673e0b">&#9670;&nbsp;</a></span>GraphEvent</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0b">GraphEvent</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0ba23c3efdd3f80798660ecf0b9af6dd5dd"></a>LayerAdded&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"></a>LayerErased&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528"><div class="ttname"><a href="namespacearmnn.xhtml#a34eaed09302a4d7bfe930c13a7673e0bad6e393dc30fd33cbcb5f6ab199093528">armnn::GraphEvent::LayerErased</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4e2dd387ba6f0dc5164b4cdf8de3262a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e2dd387ba6f0dc5164b4cdf8de3262a">&#9670;&nbsp;</a></span>JsonObjectType</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262a">JsonObjectType</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aa911842b19d8b2f9bbed8cfe909d52975"></a>Measurement&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"></a>Event&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7"><div class="ttname"><a href="namespacearmnn.xhtml#a4e2dd387ba6f0dc5164b4cdf8de3262aaa4ecfc70574394990cf17bd83df499f7">armnn::JsonObjectType::Event</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a56943a0946e5f15e5e58054b8e7a04a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56943a0946e5f15e5e58054b8e7a04a4">&#9670;&nbsp;</a></span>LayerType</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"></a>FirstLayer&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa9a62e70841c4d06dd16306a85700d36"></a>Activation&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"></a>Addition&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2139684546b147c106b329f41547640c"></a>ArgMinMax&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"></a>BatchNormalization&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6ee06c6045d0c5b6565a247955ef0fc2"></a>BatchToSpaceNd&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"></a>Comparison&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"></a>Concat&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"></a>Constant&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"></a>ConvertFp16ToFp32&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"></a>ConvertFp32ToFp16&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"></a>Convolution2d&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a731729ad1b2c0eb9399b62c770b3482d"></a>DepthToSpace&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"></a>DepthwiseConvolution2d&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9bc35e069257a508e14ed82965a8661d"></a>Dequantize&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1db19222ac424bd7162142ddf929fd2a"></a>DetectionPostProcess&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"></a>Division&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"></a>ElementwiseUnary&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3489c7b05e180496cb2ce8ac73887f48"></a>FakeQuantization&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4af3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4acab78faff25393e9defd1911cb58133e"></a>FullyConnected&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aad22c799930d644e8468fe44c0312d53"></a>Gather&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"></a>Input&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"></a>InstanceNormalization&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"></a>L2Normalization&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ac21dbda57d88c21ec9857f5d1522c488"></a>LogSoftmax&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"></a>Lstm&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"></a>Maximum&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a3d6c9ac08ada31c184094bbc67afe00d"></a>Mean&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"></a>MemCopy&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"></a>MemImport&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"></a>Merge&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"></a>Minimum&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"></a>Multiplication&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"></a>Normalization&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"></a>Output&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ade43468adaf6acb2c38ebc0c1176f82f"></a>Pad&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"></a>Permute&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad662867a41bfb30b9f75dda2b5849001"></a>Pooling2d&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"></a>PreCompiled&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"></a>Prelu&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aca39930e22f40d10155a57dba32240bb"></a>Quantize&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"></a>QuantizedLstm&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"></a>Reshape&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a9d723d04c40bfd81835c0766a698cf63"></a>Resize&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4ad140d37ad98c12ccd8e1c432f548bcdb"></a>Slice&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"></a>Softmax&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a337c392144dca0d18290c6b4711a2279"></a>SpaceToBatchNd&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a5e7ff12da912dc79e7e547281823fa4a"></a>SpaceToDepth&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a41cb9b797ebc6f6f6314e3ded935f4cf"></a>Splitter&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a2187e1021a911b3807cc1bea2eb1a9ca"></a>Stack&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"></a>StandIn&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aa31904f2b3479b5a00137fd985974b4d"></a>StridedSlice&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"></a>Subtraction&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"></a>Switch&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a71b23d26c0f5d20416d6c77754f9806a"></a>TransposeConvolution2d&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"></a>LastLayer&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a56943a0946e5f15e5e58054b8e7a04a4aaf70b1ac863830a4e1ce6268c8399f54"></a>Transpose&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abcd30d7ea97ad20c2cddc0f47e6b70c7">armnn::LayerType::ElementwiseUnary</a></div></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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae20f0f2826a6549809f050b86274567f">armnn::LayerType::Concat</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af6c0e3a1c3cfabd32ae8d3ae741fcf0a">armnn::LayerType::Comparison</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a29c2c02a361c9d7028472e5d92cd4a54">armnn::LayerType::Output</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4addf4f83b056acd5549949fc0350e9aad">armnn::LayerType::ConvertFp32ToFp16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aac61f2e17250a818dee4d12b112aa88f">armnn::LayerType::Normalization</a></div></div>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a27d1a1f7b7c2180e5b20ce9e3d00e2dd">armnn::LayerType::Multiplication</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a21baa4498161d195f5bb2e3627344ba4">armnn::LayerType::InstanceNormalization</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a68be4837f6c739877233e527a996dd00">armnn::LayerType::Merge</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1189467870bc421ae59277e750263eb2">armnn::LayerType::L2Normalization</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a0c5967f09e0669c840ebb1ed0da85e32">armnn::LayerType::Prelu</a></div></div>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a912a4b4d73726c282e3f79aa2c390d6c">armnn::LayerType::ConvertFp16ToFp32</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a6eb8b8b560161603402c0238b3a7d8b0">armnn::LayerType::Subtraction</a></div></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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4adb033d2f81b68f9a17e8f62de69fed4a">armnn::LayerType::Convolution2d</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a8321e79c278ec510f63675c040594892">armnn::LayerType::Maximum</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a1ba143ebe524d46181a4b53470693278">armnn::LayerType::PreCompiled</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa7c59ccedc6a3bd90c17f3b990afefad">armnn::LayerType::Reshape</a></div></div>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a7c5531bbefed0945814f874baf9e0e0f">armnn::LayerType::Addition</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4af97adbfc88b7012a0243215b1076e7e7">armnn::LayerType::DepthwiseConvolution2d</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae66a93a31fb93839c8369265cd44695c">armnn::LayerType::FirstLayer</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a93bca63ecbb003649425dd0e4ba79a99">armnn::LayerType::StandIn</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a115bfc5d633eae55c67f9588acdd2bf9">armnn::LayerType::MemImport</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4abbc155fb2b111bf61c4f5ff892915e6b">armnn::LayerType::Switch</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a890a37ff3bfe123414ba7e6f052b49f3">armnn::LayerType::QuantizedLstm</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a33cae35d37c1b558ecd35dd5e37dd80f">armnn::LayerType::LastLayer</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a324118a6721dd6b8a9b9f4e327df2bf5">armnn::LayerType::Input</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a06b091bc9aea697ba473c71f0bb55925">armnn::LayerType::Lstm</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4ae4743c3ec15d1d84169b17264634692e">armnn::LayerType::BatchNormalization</a></div></div>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4aa1d0ec6d56f8833a078b5a7ac4caf2d4">armnn::LayerType::Minimum</a></div></div>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a3025cdaab2deb0bb2cd642449e570833">armnn::LayerType::Division</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a93a3ba385cad27c4774e5fe64c025d3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93a3ba385cad27c4774e5fe64c025d3d">&#9670;&nbsp;</a></span>LogSeverity</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"></a>Trace&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3daa603905470e2a5b8c13e96b579ef0dba"></a>Debug&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"></a>Info&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da0eaadb4fcb48a0a0ed7bc9868be9fbaa"></a>Warning&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"></a>Error&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"></a>Fatal&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da882384ec38ce8d9582b57e70861730e4">armnn::LogSeverity::Fatal</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da4059b0251f66a18cb56f544728796875">armnn::LogSeverity::Info</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">armnn::LogSeverity::Error</a></div></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>
+<div class="ttc" id="namespacearmnn_xhtml_a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1"><div class="ttname"><a href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3dadd4ec0ac4e58f7c32a01244ae91150b1">armnn::LogSeverity::Trace</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0fc99721e27eb20ecd0ea85a3cc8b488"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0fc99721e27eb20ecd0ea85a3cc8b488">&#9670;&nbsp;</a></span>MemorySource</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488aec0fc0100c4fc1ce4eea230c3dc10360"></a>Undefined&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a1131a914388fac73e5f07b0ba0aad523"></a>Malloc&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"></a>DmaBuf&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"></a>DmaBufProtected&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a966e13d8aabbff3966a5cd28d67b4846">armnn::MemorySource::DmaBuf</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8"><div class="ttname"><a href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488a7f9067c59dd34aca0ad09a7f283ed1f8">armnn::MemorySource::DmaBufProtected</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abe18a5033f2ab9c0de82c676b48f5437"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abe18a5033f2ab9c0de82c676b48f5437">&#9670;&nbsp;</a></span>NormalizationAlgorithmChannel</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"></a>Across&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b"></a>Within&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc"><div class="ttname"><a href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">armnn::NormalizationAlgorithmChannel::Across</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad605d1661fa0d8c7fea651d82fbe11c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad605d1661fa0d8c7fea651d82fbe11c9">&#9670;&nbsp;</a></span>NormalizationAlgorithmMethod</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<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>
+</td></tr>
+<tr><td class="fieldname"><a id="ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f"></a>LocalContrast&#160;</td><td class="fielddoc"><p>Jarret 2009: Local Contrast Normalization. </p>
+</td></tr>
+</table>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="adf2e5515c4c36a3e7e46bb8b83c6754e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adf2e5515c4c36a3e7e46bb8b83c6754e">&#9670;&nbsp;</a></span>OutputShapeRounding</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"></a>Floor&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb"></a>Ceiling&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3"><div class="ttname"><a href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">armnn::OutputShapeRounding::Floor</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3888429b6ebc79f9a7df549e5e4d9a2f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3888429b6ebc79f9a7df549e5e4d9a2f">&#9670;&nbsp;</a></span>PaddingMethod</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>The padding method modifies the output of pooling layers. </p>
+<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>
+<table class="fieldtable">
+<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>
+</td></tr>
+<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>
+</td></tr>
+</table>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a961bbfe1db71a848eff5a1f0ab775718"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a961bbfe1db71a848eff5a1f0ab775718">&#9670;&nbsp;</a></span>PoolingAlgorithm</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a6a061313d22e51e0f25b7cd4dc065233"></a>Max&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"></a>Average&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"></a>L2&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021"><div class="ttname"><a href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718ab1897515d548a960afe49ecf66a29021">armnn::PoolingAlgorithm::Average</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76"><div class="ttname"><a href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718a7e6aa2d53f6ee2b1a34b017fa403cb76">armnn::PoolingAlgorithm::L2</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9a2af2f8c4af4f9efa8e79417d505ac4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a2af2f8c4af4f9efa8e79417d505ac4">&#9670;&nbsp;</a></span>ResizeMethod</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"></a>Bilinear&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"></a>NearestNeighbor&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a67a0db04d321a74b7e7fcfd3f1a3f70b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a67a0db04d321a74b7e7fcfd3f1a3f70b">&#9670;&nbsp;</a></span>Status</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>enumeration </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38"></a>Success&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"></a>Failure&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a707090747256af276c389e0cf1cb0a9a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a707090747256af276c389e0cf1cb0a9a">&#9670;&nbsp;</a></span>TuningLevel</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"></a>None&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aab571ef5b2664270d25bea4f4b61ffe68"></a>Rapid&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"></a>Normal&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"></a>Exhaustive&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aafaf34f09ea1e93bfbf591e19dc0dfb9f">armnn::TuningLevel::Exhaustive</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa960b44c579bc2f6818d2daaf9e4c16f0">armnn::TuningLevel::Normal</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754"><div class="ttname"><a href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9aa6adf97f83acf6453d4a6a4b1070f3754">armnn::TuningLevel::None</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1cfaa710db2a54673b21d2ea2da757c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1cfaa710db2a54673b21d2ea2da757c8">&#9670;&nbsp;</a></span>UnaryOperation</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a1e34af023adeb7d5f484f8eb4b9826b6"></a>Abs&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"></a>Exp&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8aae77f3ad25595e35b327334d89410054"></a>Sqrt&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"></a>Rsqrt&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"></a>Neg&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6"><div class="ttname"><a href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9eaa1e34af023adeb7d5f484f8eb4b9826b6">armnn::ActivationFunction::Abs</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8afb278fa5defd7e699fcbc930c3e76ccd">armnn::UnaryOperation::Neg</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8acad39a154bffb61175f674d6eefaf6d0">armnn::UnaryOperation::Exp</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4"><div class="ttname"><a href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8a09bb7f6e2118c85a6a55bd4bf2beeca4">armnn::UnaryOperation::Rsqrt</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a7636fbbc4f8ea2d0cf9f3ac2d12a4c62"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7636fbbc4f8ea2d0cf9f3ac2d12a4c62">&#9670;&nbsp;</a></span>Activation() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float Activation </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_activation_8cpp_source.xhtml#l00095">Activation()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad10d72a6f8859949bbe6134c638ce171"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad10d72a6f8859949bbe6134c638ce171">&#9670;&nbsp;</a></span>Activation() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Activation </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>tensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae8dcbb74cf0c855724f12833a55a5684"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8dcbb74cf0c855724f12833a55a5684">&#9670;&nbsp;</a></span>AllocateOutputData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::AllocateOutputData </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>numOutput</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>numSelected</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>boxCorners</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputIndices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>selectedBoxes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>selectedClasses</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>selectedScores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionBoxes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionScores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionClasses</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>numDetections</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_detection_post_process_8cpp_source.xhtml#l00141">DetectionPostProcess()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5980f7b42f4df041efebdc6ae242f686"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5980f7b42f4df041efebdc6ae242f686">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
+ <td>(</td>
+ <td class="paramtype">T&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2a0bcfb4df0a03357b4cbb8d9e89a3da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2a0bcfb4df0a03357b4cbb8d9e89a3da">&#9670;&nbsp;</a></span>AllTypesAreEqualImpl() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::AllTypesAreEqualImpl </td>
+ <td>(</td>
+ <td class="paramtype">T&#160;</td>
+ <td class="paramname"><em>t1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T&#160;</td>
+ <td class="paramname"><em>t2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Rest...&#160;</td>
+ <td class="paramname"><em>rest</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_rules_8hpp_source.xhtml#l00058">AllTypesAreEqualImpl()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4907f6b88c3e72be6b8ae876de355e0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4907f6b88c3e72be6b8ae876de355e0a">&#9670;&nbsp;</a></span>Append() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::Append </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
+ <td class="paramname"><em>optimizations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T &amp;&amp;&#160;</td>
+ <td class="paramname"><em>optimization</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a0c8a28b71e49c04596289ff281e58f1a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c8a28b71e49c04596289ff281e58f1a">&#9670;&nbsp;</a></span>Append() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::Append </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> &amp;&#160;</td>
+ <td class="paramname"><em>optimizations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Front &amp;&amp;&#160;</td>
+ <td class="paramname"><em>front</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Others &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>others</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_optimizer_8hpp_source.xhtml#l00030">Append()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae97734279fd10b4c754cc15bc8ed9dad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae97734279fd10b4c754cc15bc8ed9dad">&#9670;&nbsp;</a></span>ApplyBackendOptimizations()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::ApplyBackendOptimizations </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>optNetObjPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a374120de442fe42c26536bb4f1e2a5a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a374120de442fe42c26536bb4f1e2a5a1">&#9670;&nbsp;</a></span>ArgMinMax()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ArgMinMax </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t *&#160;</td>
+ <td class="paramname"><em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputTensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputTensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>axis</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l00299">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">armnn::ArgMinMaxFunction::Max</a></div></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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2"><div class="ttname"><a href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">armnn::ArgMinMaxFunction::Min</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8acab870a91373c720c9822b59ecf3b8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8acab870a91373c720c9822b59ecf3b8">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> AssignBackends </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>optNetObjPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
+ <td class="paramname"><em>firstLayer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml#acc25db0641c1c22faf95af3bb49080c9">Graph::Iterator</a> &amp;&#160;</td>
+ <td class="paramname"><em>lastLayer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea83c2c4e9b658ccafbcbe6309c5d84c64">armnn::Compute::CpuRef</a></div><div class="ttdoc">CPU Execution: Reference C++ kernels. </div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4afa662c6eb71caef475b2b981ce8eccd7">armnn::LayerType::Permute</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a4dd48794eb3305a0f5aece88b111a97b">armnn::LayerType::MemCopy</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4acb17869fe51048b5a5c4c6106551a255">armnn::LayerType::Constant</a></div></div>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a76dca645d0d0665f74e171bbc1901469"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a76dca645d0d0665f74e171bbc1901469">&#9670;&nbsp;</a></span>AssignBackends() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::AssignBackends </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optimized_network.xhtml">OptimizedNetwork</a> *&#160;</td>
+ <td class="paramname"><em>optNetObjPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_subgraph_view.xhtml">SubgraphView</a> &amp;&#160;</td>
+ <td class="paramname"><em>subgraph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a09ff1f6670d27d3b41e5b5d35a6c9f37"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09ff1f6670d27d3b41e5b5d35a6c9f37">&#9670;&nbsp;</a></span>AssignSplitId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::AssignSplitId </td>
+ <td>(</td>
+ <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
+ <td class="paramname"><em>layerInfos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
+ <td class="paramname"><em>layerInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00262">ForEachLayerInput()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a56f168327453ea4461cbc1c0ac7f15b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56f168327453ea4461cbc1c0ac7f15b6">&#9670;&nbsp;</a></span>AttemptBackendAssignment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::AttemptBackendAssignment </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>graph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
+ <td class="paramname"><em>layer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataTypeIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataTypeOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>availablePreferredBackends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::string &amp;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac2807505b850738bc8a1991ce669dd47"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac2807505b850738bc8a1991ce669dd47">&#9670;&nbsp;</a></span>BackendRegistryInstance()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_backend_registry.xhtml">BackendRegistry</a> &amp; BackendRegistryInstance </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="adc251e65d99405496d503811589e9a20"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc251e65d99405496d503811589e9a20">&#9670;&nbsp;</a></span>BatchNormImpl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void BatchNormImpl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_queue_descriptor.xhtml">BatchNormalizationQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>meanDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>varianceDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>betaDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>gammaDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputEncoder</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_batch_normalization_workload_8cpp_source.xhtml#l00025">RefBatchNormalizationWorkload::Execute()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8746512fab5ec10c2c57800c66311ba7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8746512fab5ec10c2c57800c66311ba7">&#9670;&nbsp;</a></span>BatchToSpaceNd()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void BatchToSpaceNd </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
+ <td class="paramname"><em>dataLayout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputTensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputTensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>blockShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt; &amp;&#160;</td>
+ <td class="paramname"><em>cropsData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputEncoder</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad3d9cbf26cb5894fd6d9169dbe743417"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad3d9cbf26cb5894fd6d9169dbe743417">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[1/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckInputLayerVisitorBindingIdAndName&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ac7ce83f024515592cffac13ae5220f1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7ce83f024515592cffac13ae5220f1e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[2/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckInputLayerVisitorBindingIdAndNameNull&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ac28b0a4861e6eab3e7621a7ed4eb5f62"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac28b0a4861e6eab3e7621a7ed4eb5f62">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[3/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckOutputLayerVisitorBindingIdAndName&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a9a7475b081b431ffa9915aac51c2d338"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a7475b081b431ffa9915aac51c2d338">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[4/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckOutputLayerVisitorBindingIdAndNameNull&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a10d15f3df1ab52b3b915a4be1dbf386b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10d15f3df1ab52b3b915a4be1dbf386b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[5/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckConvolution2dLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a62448ee306fc41cc7980c4b7eac3ebb6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a62448ee306fc41cc7980c4b7eac3ebb6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[6/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedConvolution2dLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a66e9fcc01969d6afa35dfaa212ded223"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a66e9fcc01969d6afa35dfaa212ded223">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[7/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckConvolution2dLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a8baf97065d802063eb9bcdd1a066dc86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8baf97065d802063eb9bcdd1a066dc86">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[8/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeAddition&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a154c5a01df05412929d89e06fc4d0d6d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a154c5a01df05412929d89e06fc4d0d6d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[9/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedConvolution2dLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a6eadb1671955b1bf7cdd8b29fd34aa33"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6eadb1671955b1bf7cdd8b29fd34aa33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[10/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckDepthwiseConvolution2dLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ac36bd2336c0e3caefecde40bc07e2bf3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac36bd2336c0e3caefecde40bc07e2bf3">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[11/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedDepthwiseConvolution2dLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a14bcc6125921389dceb27e432bc7a489"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a14bcc6125921389dceb27e432bc7a489">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[12/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckDepthwiseConvolution2dLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a9cec088786b209989fe9e04e1be9636d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cec088786b209989fe9e04e1be9636d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[13/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">InputOutputLayerDynamicQuant&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="_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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aaeafd5f3786a0bd215468714c1e743b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaeafd5f3786a0bd215468714c1e743b1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[14/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedDepthwiseConvolution2dLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a3425db69ef4e4927a82e99025c16294a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3425db69ef4e4927a82e99025c16294a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[15/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckFullyConnectedLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a631f8c0c9bceff4bef761eb7fd865686"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a631f8c0c9bceff4bef761eb7fd865686">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[16/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedFullyConnectedLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a7db6a78bb6eedbea7f0525f1fe59de28"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7db6a78bb6eedbea7f0525f1fe59de28">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[17/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeAbsActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7b017a692367333d1035e276f252f46c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b017a692367333d1035e276f252f46c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[18/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckFullyConnectedLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2df3b432de50a9b9e8b486aa53e11cc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2df3b432de50a9b9e8b486aa53e11cc5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[19/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeLinearActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5f3e4faca1d063ad73764571f898dc2d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f3e4faca1d063ad73764571f898dc2d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[20/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedFullyConnectedLayerWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a3dd219b394b8186d1849ee595193268d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3dd219b394b8186d1849ee595193268d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[21/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeReLuActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a199581e11ebd49e1322b090484f3dd29"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a199581e11ebd49e1322b090484f3dd29">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[22/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckBatchNormalizationLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a52e948b4bffc16a3933d812dbc384833"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52e948b4bffc16a3933d812dbc384833">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[23/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSoftReLuActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af1eda3afe49e91bf04d6e34a0e3be8ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af1eda3afe49e91bf04d6e34a0e3be8ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[24/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedBatchNormalizationLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="abf109580225cb949565c8223bceadd5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf109580225cb949565c8223bceadd5d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[25/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeBoundedReluActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1a8221833cf3d29cd6435aed632dfcce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a8221833cf3d29cd6435aed632dfcce">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[26/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckConstLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a9da3b50de4d108b81264a22c5adacf05"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9da3b50de4d108b81264a22c5adacf05">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[27/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedConstLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="afefeb492b3446d34e413556a805210b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afefeb492b3446d34e413556a805210b6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[28/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckLstmLayerBasic&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="acbf871a6ec0726bfe2746e761a278108"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acbf871a6ec0726bfe2746e761a278108">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[29/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeTanHActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8f6ad27911e2e711f665ae69c5b2cd1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f6ad27911e2e711f665ae69c5b2cd1d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[30/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedLstmLayerBasic&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a32068047cc7b37f1bed1830508891526"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a32068047cc7b37f1bed1830508891526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[31/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeLeakyReLuActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5400bc09082eab59bdfdbd61a06578f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5400bc09082eab59bdfdbd61a06578f5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[32/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckLstmLayerCifgDisabled&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a6c08ed3db08fcfca0592c62cd6080b76"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c08ed3db08fcfca0592c62cd6080b76">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[33/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeELuActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab182b6a1d2348a86472001c92586717a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab182b6a1d2348a86472001c92586717a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[34/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeHardSwishActivation&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad956f3db79c93a658cbccb41714e1542"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad956f3db79c93a658cbccb41714e1542">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[35/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedLstmLayerCifgDisabled&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="adf59f87645d301e9b56dd70aed350e54"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adf59f87645d301e9b56dd70aed350e54">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[36/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeBatchNorm&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa524f33d3d2b294847c3929237947b20"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa524f33d3d2b294847c3929237947b20">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[37/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckLstmLayerPeephole&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ae91bc23bf56bb5f9c2e0ddb1fc7be75e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae91bc23bf56bb5f9c2e0ddb1fc7be75e">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[38/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeDepthToSpace&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">armnn::DataLayout::NHWC</a></div></div>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa6281ed3090b74167170c8f692688de5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6281ed3090b74167170c8f692688de5">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[39/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">OverrideInputRangeEmptyNetwork&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0f1dc6ab5dccc96c5a4df37cc5bcb923"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f1dc6ab5dccc96c5a4df37cc5bcb923">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[40/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedLstmLayerPeephole&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ad432424d97021ae6c81e38130b1ec5d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad432424d97021ae6c81e38130b1ec5d6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[41/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">OverrideInputRangeNoInputLayers&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6e97e093453fc053a5c82386927a0d6c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e97e093453fc053a5c82386927a0d6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[42/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">OverrideInputRangeInputLayers&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0d00c75b42e46b3a7dd78f9a40324c33"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d00c75b42e46b3a7dd78f9a40324c33">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[43/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckLstmLayerProjection&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a881ab05533f917737509402730668e4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a881ab05533f917737509402730668e4a">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[44/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeFullyConnected&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a69dd8c7608ff0935a247f3aa07f98212"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a69dd8c7608ff0935a247f3aa07f98212">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[45/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeFullyConnectedBiasEnabled&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3a3105d08231d5f2e53511bab46224c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a3105d08231d5f2e53511bab46224c9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[46/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedLstmLayerProjection&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aa117e0112fdc02a7a011cfb39dc596ab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa117e0112fdc02a7a011cfb39dc596ab">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[47/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeConvolution2d&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9827adb2cf787460578999e0484568fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9827adb2cf787460578999e0484568fa">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[48/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeConvolution2dWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01155">TestQuantizeConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a84e5356296be66aa930ec53118f5ef6b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84e5356296be66aa930ec53118f5ef6b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[49/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckQuantizedLstmLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a1db5d836b83fc71602a7993616de5b42"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1db5d836b83fc71602a7993616de5b42">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[50/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeDepthwiseConvolution2d&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a891abdb9079715cbcf85792e2b450652"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a891abdb9079715cbcf85792e2b450652">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[51/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeDepthwiseConvolution2dWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01241">TestQuantizeDepthwiseConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abd033569519fec65077ea983f6c75a9d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abd033569519fec65077ea983f6c75a9d">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[52/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeInstanceNormalization&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a492fae0605d06684297540bb9af319dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a492fae0605d06684297540bb9af319dc">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[53/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">CheckNamedQuantizedLstmLayer&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a46d045b35ad6b8c2ffe0c04684f97779"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46d045b35ad6b8c2ffe0c04684f97779">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[54/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeLogSoftmax&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7e94e9ab356805c498f5fc2fba87e4e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e94e9ab356805c498f5fc2fba87e4e6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[55/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSoftmax&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4734542212b5811d0511ea6b16f35168"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4734542212b5811d0511ea6b16f35168">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[56/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeStandIn&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="add22da50dd35a100548dde4c57ae89d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#add22da50dd35a100548dde4c57ae89d1">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[57/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizePermute&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9a6bc66017eb7c132fd6e13ff0dcb540"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a6bc66017eb7c132fd6e13ff0dcb540">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[58/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSpaceToBatch&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa78ce2bbe65cae8f3d60839467dbfc83"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa78ce2bbe65cae8f3d60839467dbfc83">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[59/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSpaceToDepth&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aaa86b6903e41d2d2828e00b32f872375"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa86b6903e41d2d2828e00b32f872375">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[60/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizePooling2d&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a369051e180246c66b20c93de5fecee8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a369051e180246c66b20c93de5fecee8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[61/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0e2bce68a1f7eff47ead4d9a2804eb91">QuantizeConstant</a>&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae3af95ea62252012cf93a98167afef64"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3af95ea62252012cf93a98167afef64">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[62/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeArgMinMax&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab83f837cdd5bfcff537dae72a96d6fc8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab83f837cdd5bfcff537dae72a96d6fc8">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[63/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeComparison&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="add47ebcd4a59304a25c71996aea2b38b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#add47ebcd4a59304a25c71996aea2b38b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[64/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeConcat&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9258afcd4c6d8443c9130d8c9bf26442"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9258afcd4c6d8443c9130d8c9bf26442">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[65/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeReshape&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a23a4f3c387a2a3a035e97764e34277c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a23a4f3c387a2a3a035e97764e34277c6">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[66/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSplitter&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a102f37a09de1b0d4d78740a3c12902bf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a102f37a09de1b0d4d78740a3c12902bf">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[67/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeResize&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5f9c6094ae666c8e14907307d0481fac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f9c6094ae666c8e14907307d0481fac">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[68/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeStridedSlice&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aec7cf8e3927ee7d24f8b19d206ce3e84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aec7cf8e3927ee7d24f8b19d206ce3e84">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[69/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeBatchToSpace&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a733ef16d4eaaf8cce338320fa042f526"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a733ef16d4eaaf8cce338320fa042f526">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[70/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizePrelu&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5e66fe270ca921faeecd26735192d08b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e66fe270ca921faeecd26735192d08b">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[71/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeTransposeConvolution2d&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aec82007c45313f59d24b304e35b3db6c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aec82007c45313f59d24b304e35b3db6c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[72/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeTransposeConvolution2dWithBiases&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02597">TestQuantizeTransposeConvolution2d()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a77cba79eef903eb3d758b4edbcc626ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77cba79eef903eb3d758b4edbcc626ef">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[73/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeStack&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a46f313720b601ca97a9c2a5158814bff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46f313720b601ca97a9c2a5158814bff">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[74/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeSlice&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a728153b62fa66e6ed1243e09144bfe8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a728153b62fa66e6ed1243e09144bfe8c">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[75/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeInf&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02836">SetupQuantize()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a898305dc4cdb78a5fbed481250f6cd35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a898305dc4cdb78a5fbed481250f6cd35">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[76/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">QuantizeNegativeInf&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a94eb3bdf0e1c8c748c2e29dce048ace4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a94eb3bdf0e1c8c748c2e29dce048ace4">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[77/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">PreserveTypeFloat32&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab242670b85e047e79bb297cdb192cc93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab242670b85e047e79bb297cdb192cc93">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[78/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">PreserveTypeQAsymmU8&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a061891029598224370aae4cd18b78406"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a061891029598224370aae4cd18b78406">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[79/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">PreserveTypeQsymm8&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4d4386cbb19dbc551e423992ecdd0d61"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4d4386cbb19dbc551e423992ecdd0d61">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[80/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">PreserveTypeQsymm16&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8c09fbb75d2c2dea48926a540fc5cce9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c09fbb75d2c2dea48926a540fc5cce9">&#9670;&nbsp;</a></span>BOOST_AUTO_TEST_CASE() <span class="overload">[81/81]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">armnn::BOOST_AUTO_TEST_CASE </td>
+ <td>(</td>
+ <td class="paramtype">TestConnectionPreservationAfterDynamicQuant&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abe311824d11bad4e6f93c8f94a721052"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abe311824d11bad4e6f93c8f94a721052">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>ostr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>right</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af676ec7e9534bd6e6ac3072a2c0403f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af676ec7e9534bd6e6ac3072a2c0403f4">&#9670;&nbsp;</a></span>boost_test_print_type() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::boost_test_print_type </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>ostr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a20f74b679d59b52e9fae3bbef8f10ffb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a20f74b679d59b52e9fae3bbef8f10ffb">&#9670;&nbsp;</a></span>CalcLevel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int armnn::CalcLevel </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
+ <td class="paramname"><em>eventPtr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00381">Profiler::AnalyzeEventsAndWriteResults()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ab6ed577caec49def150e231c63af0d12"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab6ed577caec49def150e231c63af0d12">&#9670;&nbsp;</a></span>CalculateEdgeStrategy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#aff209afc1dc598da399e3e78617ce016">EdgeStrategy</a> armnn::CalculateEdgeStrategy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
+ <td class="paramname"><em>srcFactoryId</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
+ <td class="paramname"><em>layer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
+ <td class="paramname"><em>connectedLayer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a8d9f52bbb69750456acca06988beabda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d9f52bbb69750456acca06988beabda">&#9670;&nbsp;</a></span>CalculateSlotOption()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOption </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputSlot</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="accb1637c58e1523f740025e0d0e7c6dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#accb1637c58e1523f740025e0d0e7c6dd">&#9670;&nbsp;</a></span>CalculateSlotOptionForInput()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForInput </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
+ <td class="paramname"><em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab46c7f5f4736d550ab0e5e05a0fff4a9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab46c7f5f4736d550ab0e5e05a0fff4a9">&#9670;&nbsp;</a></span>CalculateSlotOptionForOutput()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a> armnn::CalculateSlotOptionForOutput </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_output_slot.xhtml">OutputSlot</a> &amp;&#160;</td>
+ <td class="paramname"><em>slot</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00824">SelectTensorHandleStrategy()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a84f86b4de5adf0b164e811c87051a0ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84f86b4de5adf0b164e811c87051a0ee">&#9670;&nbsp;</a></span>CheckFlag()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::CheckFlag </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a>&#160;</td>
+ <td class="paramname"><em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0fc99721e27eb20ecd0ea85a3cc8b488">MemorySource</a>&#160;</td>
+ <td class="paramname"><em>source</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a5a38bd982292180692711b0ae296bb34"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a38bd982292180692711b0ae296bb34">&#9670;&nbsp;</a></span>CheckLayerBindingId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::CheckLayerBindingId </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
+ <td class="paramname"><em>visitorId</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ab8cf8f9fb6792e654c2d8d8382f6f01b">LayerBindingId</a>&#160;</td>
+ <td class="paramname"><em>id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="af002111f64aee648e3258247075cae36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af002111f64aee648e3258247075cae36">&#9670;&nbsp;</a></span>CheckScaleSetOnQuantizedType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::CheckScaleSetOnQuantizedType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
+ <td class="paramname"><em>layer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00269">AssignBackends()</a>.</p>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0"><div class="ttname"><a href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4a31d953b9d49a6b4378f45097047976d0">armnn::LayerType::Softmax</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acea2d8c53b441e24b6d60b090fda37c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acea2d8c53b441e24b6d60b090fda37c9">&#9670;&nbsp;</a></span>CheckSupportRule()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::CheckSupportRule </td>
+ <td>(</td>
+ <td class="paramtype">F&#160;</td>
+ <td class="paramname"><em>rule</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>reason</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac7cce6c8c3c53b2feeba6548fc3fb00c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7cce6c8c3c53b2feeba6548fc3fb00c">&#9670;&nbsp;</a></span>CheckTensorDataTypesEqual()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::CheckTensorDataTypesEqual </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_tensor_8hpp_source.xhtml#l00095">TensorInfo::GetDataType()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00079">IsAdditionSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a1391582cd6e145b67c98f3410667968e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1391582cd6e145b67c98f3410667968e">&#9670;&nbsp;</a></span>ClAbsWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClAbsWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00399">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a42ef3cee193102dc7755193579209cca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a42ef3cee193102dc7755193579209cca">&#9670;&nbsp;</a></span>ClActivationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClActivationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00159">ClLayerSupport::IsActivationSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aefc82adf365ff14b0095dafdd2df6afc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aefc82adf365ff14b0095dafdd2df6afc">&#9670;&nbsp;</a></span>ClAdditionValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClAdditionValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00171">ClLayerSupport::IsAdditionSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab80423b306d8e0436b9a316922911d4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab80423b306d8e0436b9a316922911d4d">&#9670;&nbsp;</a></span>ClArgMinMaxWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClArgMinMaxWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00183">ClLayerSupport::IsArgMinMaxSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="adfe10e7086e3e3b98927cf84aee03dd0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adfe10e7086e3e3b98927cf84aee03dd0">&#9670;&nbsp;</a></span>ClBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::ClBackendId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_backend_8cpp_source.xhtml#l00029">ClBackend::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad6cb42ca5150bb96c151e4a4e6557d70"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6cb42ca5150bb96c151e4a4e6557d70">&#9670;&nbsp;</a></span>ClBatchNormalizationValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClBatchNormalizationValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>mean</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>var</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>beta</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>gamma</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00196">ClLayerSupport::IsBatchNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a67957983877fb2c720a2ad7f88c45a3c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a67957983877fb2c720a2ad7f88c45a3c">&#9670;&nbsp;</a></span>ClBatchToSpaceNdWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClBatchToSpaceNdWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00684">BatchToSpaceNdDescriptor::m_DataLayout</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00216">ClLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7782f0809076f14363eacb4a38964b9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7782f0809076f14363eacb4a38964b9f">&#9670;&nbsp;</a></span>ClConcatWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClConcatWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00246">ClLayerSupport::IsConcatSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a46efae0191388fd33db4e95c5d79e2be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46efae0191388fd33db4e95c5d79e2be">&#9670;&nbsp;</a></span>ClConvertFp16ToFp32WorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClConvertFp16ToFp32WorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00296">ClLayerSupport::IsConvertFp16ToFp32Supported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a37f6946bfb7a9c7d64881b7a2e13945f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37f6946bfb7a9c7d64881b7a2e13945f">&#9670;&nbsp;</a></span>ClConvertFp32ToFp16WorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClConvertFp32ToFp16WorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00306">ClLayerSupport::IsConvertFp32ToFp16Supported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acd1146eb56f1473a0bf4561bcc1d1529"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd1146eb56f1473a0bf4561bcc1d1529">&#9670;&nbsp;</a></span>ClConvolution2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClConvolution2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00316">ClLayerSupport::IsConvolution2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a5634af98b603236c6748adb5ac92e766"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5634af98b603236c6748adb5ac92e766">&#9670;&nbsp;</a></span>ClDepthToSpaceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClDepthToSpaceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00342">ClLayerSupport::IsDepthToSpaceSupported()</a>.</p>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4ec5dfcb3e419ddce1fcb3b799f312e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4ec5dfcb3e419ddce1fcb3b799f312e1">&#9670;&nbsp;</a></span>ClDepthwiseConvolutionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClDepthwiseConvolutionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a75045734c29d7d6635342c05adbc151b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a75045734c29d7d6635342c05adbc151b">&#9670;&nbsp;</a></span>ClDequantizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClDequantizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00332">ClLayerSupport::IsDequantizeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6a0edac987d58b405636df2eb2ee525d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a0edac987d58b405636df2eb2ee525d">&#9670;&nbsp;</a></span>ClDivisionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClDivisionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00387">ClLayerSupport::IsDivisionSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a8874961260f35da85229554f92e16ca9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8874961260f35da85229554f92e16ca9">&#9670;&nbsp;</a></span>ClFloorWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClFloorWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00422">ClLayerSupport::IsFloorSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a00ef2c55913f952924a3e23556655285"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00ef2c55913f952924a3e23556655285">&#9670;&nbsp;</a></span>ClFullyConnectedWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClFullyConnectedWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00432">ClLayerSupport::IsFullyConnectedSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acf69869c2242e5e3741c4f9252099393"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf69869c2242e5e3741c4f9252099393">&#9670;&nbsp;</a></span>ClGreaterWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClGreaterWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00228">ClLayerSupport::IsComparisonSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a79d362f0c6e04d51807e0d81b5b05f3a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a79d362f0c6e04d51807e0d81b5b05f3a">&#9670;&nbsp;</a></span>ClInstanceNormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClInstanceNormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00463">ClLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aef334cdb24000c330f4d2e5f1b384784"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aef334cdb24000c330f4d2e5f1b384784">&#9670;&nbsp;</a></span>ClL2NormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClL2NormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00475">ClLayerSupport::IsL2NormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a90ab88fe4c7aa9466c4653404a6b2213"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a90ab88fe4c7aa9466c4653404a6b2213">&#9670;&nbsp;</a></span>ClLstmFloatWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClLstmFloatWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>scratchBuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00487">ClLayerSupport::IsLstmSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a553706c6338ffc52b0d916859f642587"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a553706c6338ffc52b0d916859f642587">&#9670;&nbsp;</a></span>ClMaximumWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClMaximumWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00511">ClLayerSupport::IsMaximumSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa1fff3c5bdebee27ad33aacc6d110d32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa1fff3c5bdebee27ad33aacc6d110d32">&#9670;&nbsp;</a></span>ClMeanValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClMeanValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00523">ClLayerSupport::IsMeanSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8c04c8e796a4fbec706df42ed9c27e4e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c04c8e796a4fbec706df42ed9c27e4e">&#9670;&nbsp;</a></span>ClMinimumWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClMinimumWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00543">ClLayerSupport::IsMinimumSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a674a280a55c3760374a05ee24e9e3e74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a674a280a55c3760374a05ee24e9e3e74">&#9670;&nbsp;</a></span>ClMultiplicationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClMultiplicationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00555">ClLayerSupport::IsMultiplicationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a144c2e243a255715f309999077ed1792"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a144c2e243a255715f309999077ed1792">&#9670;&nbsp;</a></span>ClNormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClNormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00567">ClLayerSupport::IsNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="adcf7b7d939bac1cfaeb333c7b3175bb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adcf7b7d939bac1cfaeb333c7b3175bb8">&#9670;&nbsp;</a></span>ClPadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClPadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00581">ClLayerSupport::IsPadSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a26c25df9e2271333ab4d4ef71db41dca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a26c25df9e2271333ab4d4ef71db41dca">&#9670;&nbsp;</a></span>ClPermuteWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClPermuteWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00593">ClLayerSupport::IsPermuteSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8a21bb33f7f054ce7b48a8c7df9e6d4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a21bb33f7f054ce7b48a8c7df9e6d4a">&#9670;&nbsp;</a></span>ClPooling2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClPooling2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00601">ClLayerSupport::IsPooling2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ae58d1f4437a779274037bc86efac9e26"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae58d1f4437a779274037bc86efac9e26">&#9670;&nbsp;</a></span>ClPreluWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClPreluWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>alpha</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00609">ClLayerSupport::IsPreluSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a5fb7fe07abfb2373103d842b47a24726"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5fb7fe07abfb2373103d842b47a24726">&#9670;&nbsp;</a></span>ClQuantizedLstmWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClQuantizedLstmWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>previousCellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>previousOutputIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00617">ClLayerSupport::IsQuantizedLstmSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a9c1b478e30a1e8a4ecac874cf15f13d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c1b478e30a1e8a4ecac874cf15f13d4">&#9670;&nbsp;</a></span>ClQuantizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClQuantizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00635">ClLayerSupport::IsQuantizeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="af5bb7a834a74983cbbc249785d0c392b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5bb7a834a74983cbbc249785d0c392b">&#9670;&nbsp;</a></span>ClReshapeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClReshapeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00645">ClLayerSupport::IsReshapeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a95b187d3c6b7b46f4fbdc60be69fc02c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95b187d3c6b7b46f4fbdc60be69fc02c">&#9670;&nbsp;</a></span>ClResizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClResizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00654">ClLayerSupport::IsResizeSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3f6f9f0d3567ae04b49ea88727845900"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3f6f9f0d3567ae04b49ea88727845900">&#9670;&nbsp;</a></span>ClRsqrtWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClRsqrtWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00399">ClLayerSupport::IsElementwiseUnarySupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6d85d2806d0a90140832ad8113c1d350"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6d85d2806d0a90140832ad8113c1d350">&#9670;&nbsp;</a></span>ClSliceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSliceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00685">ClLayerSupport::IsSliceSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abc6f7e5fe77e5aed3f7842755dd34073"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc6f7e5fe77e5aed3f7842755dd34073">&#9670;&nbsp;</a></span>ClSoftmaxWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSoftmaxWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00693">ClLayerSupport::IsSoftmaxSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a534b28fd4b345bbc938d055ff5b8970f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a534b28fd4b345bbc938d055ff5b8970f">&#9670;&nbsp;</a></span>ClSpaceToBatchNdWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSpaceToBatchNdWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00701">ClLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5f81bc4e5533cfe99932865bd102735c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f81bc4e5533cfe99932865bd102735c">&#9670;&nbsp;</a></span>ClSpaceToDepthWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSpaceToDepthWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00713">ClLayerSupport::IsSpaceToDepthSupported()</a>.</p>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3ac8a60f837b19b20987e4fd238ce0cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ac8a60f837b19b20987e4fd238ce0cd">&#9670;&nbsp;</a></span>ClSplitterWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSplitterWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>outputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>splitAxis</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00736">ClLayerSupport::IsSplitterSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a8c9fec997dbb5db4cdb433c36d075782"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c9fec997dbb5db4cdb433c36d075782">&#9670;&nbsp;</a></span>ClStackWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClStackWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00769">ClLayerSupport::IsStackSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a157e0508f6d6d08e3ca4cf6c661242e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a157e0508f6d6d08e3ca4cf6c661242e6">&#9670;&nbsp;</a></span>ClStridedSliceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClStridedSliceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00781">ClLayerSupport::IsStridedSliceSupported()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3bbbf958387c788549b0d8481232875f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3bbbf958387c788549b0d8481232875f">&#9670;&nbsp;</a></span>ClSubtractionValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClSubtractionValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00793">ClLayerSupport::IsSubtractionSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac86fc56b9a27576bfe930a7012a402d5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac86fc56b9a27576bfe930a7012a402d5">&#9670;&nbsp;</a></span>ClTensorHandleFactoryId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::ClTensorHandleFactoryId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_tensor_handle_factory_8cpp_source.xhtml#l00082">ClTensorHandleFactory::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a719ea81939d6a25f8636b52c59165d66"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a719ea81939d6a25f8636b52c59165d66">&#9670;&nbsp;</a></span>ClTransposeConvolution2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClTransposeConvolution2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00805">ClLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a1c3a39fbecb45be0bb15dd665c9be61d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1c3a39fbecb45be0bb15dd665c9be61d">&#9670;&nbsp;</a></span>ClTransposeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status ClTransposeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_layer_support_8cpp_source.xhtml#l00821">ClLayerSupport::IsTransposeSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5d94c2125c725df5b619d16db9d4a8e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5d94c2125c725df5b619d16db9d4a8e9">&#9670;&nbsp;</a></span>Combine() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
+ <td>(</td>
+ <td class="paramtype">Arg&#160;</td>
+ <td class="paramname"><em>sourceA</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Arg&#160;</td>
+ <td class="paramname"><em>sourceB</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_memory_sources_8hpp_source.xhtml#l00042">Combine()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae91e1849e95350c8e50912a217999eac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae91e1849e95350c8e50912a217999eac">&#9670;&nbsp;</a></span>Combine() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a5b05f3b7208ec7cea3338e30057c0bac">MemorySourceFlags</a> armnn::Combine </td>
+ <td>(</td>
+ <td class="paramtype">Arg&#160;</td>
+ <td class="paramname"><em>source</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Args...&#160;</td>
+ <td class="paramname"><em>rest</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_memory_sources_8hpp_source.xhtml#l00036">Combine()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a238a74871f634b778176e5dc8391888a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a238a74871f634b778176e5dc8391888a">&#9670;&nbsp;</a></span>CompatibleTypes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::CompatibleTypes </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a7296af8a86f22ef7f144dc02c4c94324"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7296af8a86f22ef7f144dc02c4c94324">&#9670;&nbsp;</a></span>CompatibleTypes< float >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; float &gt; </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">Float32</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a7b224e4c135fa1fdb3e54dfe945e07f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b224e4c135fa1fdb3e54dfe945e07f8">&#9670;&nbsp;</a></span>CompatibleTypes< Half >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">Float16</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6a0a86fe227d22c1cf7381798ad8550f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a0a86fe227d22c1cf7381798ad8550f">&#9670;&nbsp;</a></span>CompatibleTypes< int16_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int16_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">QSymmS16</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a000bb59f20fa937e2acff1c2aaba7944"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a000bb59f20fa937e2acff1c2aaba7944">&#9670;&nbsp;</a></span>CompatibleTypes< int32_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int32_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">Signed32</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a2bcd446605a7ee354be1038983358e04"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2bcd446605a7ee354be1038983358e04">&#9670;&nbsp;</a></span>CompatibleTypes< int8_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; int8_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad23bcbfd1876f1ae11c926d0e3e8c3e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad23bcbfd1876f1ae11c926d0e3e8c3e5">&#9670;&nbsp;</a></span>CompatibleTypes< uint8_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="namespacearmnn.xhtml#a238a74871f634b778176e5dc8391888a">armnn::CompatibleTypes</a>&lt; uint8_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a27226c864bac7454a8504f8edb15d95b">Boolean</a>, and <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">QAsymmU8</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6fff4b4b1b5d4d37c9cf53d0e31c05dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fff4b4b1b5d4d37c9cf53d0e31c05dd">&#9670;&nbsp;</a></span>CompleteLeakyReluNetwork()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::CompleteLeakyReluNetwork </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
+ <td class="paramname"><em>network</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *&#160;</td>
+ <td class="paramname"><em>activation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a> *&#160;</td>
+ <td class="paramname"><em>layerUnderTest</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01620">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aa70ebe7b7898fe69ce24db803caa373e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa70ebe7b7898fe69ce24db803caa373e">&#9670;&nbsp;</a></span>ComputeSoftmaxAclAxis()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int armnn::ComputeSoftmaxAclAxis </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>softmaxDesc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>tensor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8cbabc875597b3bed0ccdc0adb289fde"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8cbabc875597b3bed0ccdc0adb289fde">&#9670;&nbsp;</a></span>ComputeSplitAxis()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::set&lt;unsigned int&gt; armnn::ComputeSplitAxis </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a60291543fe872b795e71e05bcd835fd1">armnn::SplitterDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1deafe1b2777bcaadefe2371b3ebbb27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1deafe1b2777bcaadefe2371b3ebbb27">&#9670;&nbsp;</a></span>Concatenate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Concatenate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_concat_queue_descriptor.xhtml">ConcatQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_concat_workload_8cpp_source.xhtml#l00015">RefConcatWorkload::Execute()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae4ab3bf0697ad13316a6bcba0a8fade5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae4ab3bf0697ad13316a6bcba0a8fade5">&#9670;&nbsp;</a></span>ConditionalThrow() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ConditionalThrow </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>condition</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>message</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a6ed414c05eb6d4c89e0e4a475a0479c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6ed414c05eb6d4c89e0e4a475a0479c0">&#9670;&nbsp;</a></span>ConditionalThrow() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ConditionalThrow </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>condition</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ae57b7f9e2cb7080bf10b28d1f72b558e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae57b7f9e2cb7080bf10b28d1f72b558e">&#9670;&nbsp;</a></span>ConditionalThrowIfNotEqual()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ConditionalThrowIfNotEqual </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>message</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const ComparedType &amp;&#160;</td>
+ <td class="paramname"><em>leftHandSide</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const ComparedType &amp;&#160;</td>
+ <td class="paramname"><em>rightHandSide</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>ComparedType must support: operator==(const ComparedType&amp;) operator&lt;&lt;(ostream&amp;, const ComparedType&amp;) </p>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aa59f7a819c3e29d10ffc41e5c0616872"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa59f7a819c3e29d10ffc41e5c0616872">&#9670;&nbsp;</a></span>ConfigureLogging()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ConfigureLogging </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>printToStandardOutput</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>printToDebugOutput</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
+ <td class="paramname"><em>severity</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Configures the logging behaviour of the ARMNN library. </p>
+<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>
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab562537b5c1ef1e6cde9db9f5fa322bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab562537b5c1ef1e6cde9db9f5fa322bd">&#9670;&nbsp;</a></span>ConfigureTuner()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ConfigureTuner </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::CLTuner &amp;&#160;</td>
+ <td class="paramname"><em>tuner</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
+ <td class="paramname"><em>level</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad701d0d29baa4266ab4d33b090aa661c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad701d0d29baa4266ab4d33b090aa661c">&#9670;&nbsp;</a></span>ConvertActivationDescriptorToAclActivationLayerInfo()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::ActivationLayerInfo armnn::ConvertActivationDescriptorToAclActivationLayerInfo </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>actDesc</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afdba36f125621d775d471f0daf613df2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afdba36f125621d775d471f0daf613df2">&#9670;&nbsp;</a></span>ConvertActivationFunctionToAclActivationFunction()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::ActivationLayerInfo::ActivationFunction armnn::ConvertActivationFunctionToAclActivationFunction </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
+ <td class="paramname"><em>armnnFunction</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_arm_compute_utils_8hpp_source.xhtml#l00074">ConvertActivationDescriptorToAclActivationLayerInfo()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abccab9266ab13dbd806445af31ddbba7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abccab9266ab13dbd806445af31ddbba7">&#9670;&nbsp;</a></span>ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::FullyConnectedLayerInfo armnn::ConvertFullyConnectedDescriptorToAclFullyConnectedLayerInfo </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>fullyConnectedDesc</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00388">FullyConnectedDescriptor::m_TransposeWeightMatrix</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a9cdee30c21f3dd630b4e460527105b74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cdee30c21f3dd630b4e460527105b74">&#9670;&nbsp;</a></span>ConvertLogSeverity()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a> armnn::ConvertLogSeverity </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407">BoostLogSeverityMapping</a>&#160;</td>
+ <td class="paramname"><em>severity</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad69ffa576a596b9eb20ab6a41420c541"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad69ffa576a596b9eb20ab6a41420c541">&#9670;&nbsp;</a></span>ConvertMaskToACLFormat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int32_t ConvertMaskToACLFormat </td>
+ <td>(</td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>mask</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>numDim</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aa5baabb8e3a4aa6cbdcab419d743e747"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5baabb8e3a4aa6cbdcab419d743e747">&#9670;&nbsp;</a></span>ConvertNormalizationAlgorithmChannelToAclNormType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::NormType armnn::ConvertNormalizationAlgorithmChannelToAclNormType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
+ <td class="paramname"><em>channelType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a8f3bfacadfd6d2146d6ccd299dabc7aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f3bfacadfd6d2146d6ccd299dabc7aa">&#9670;&nbsp;</a></span>ConvertOutputShapeRoundingToAclDimensionRoundingType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::DimensionRoundingType armnn::ConvertOutputShapeRoundingToAclDimensionRoundingType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
+ <td class="paramname"><em>rounding</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad256fcf8c7f4d5a240fa47f0b56d50af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad256fcf8c7f4d5a240fa47f0b56d50af">&#9670;&nbsp;</a></span>ConvertPoolingAlgorithmToAclPoolingType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::PoolingType armnn::ConvertPoolingAlgorithmToAclPoolingType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
+ <td class="paramname"><em>poolingAlgorithm</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ae9bdcb8ac91731109dc423d6ed476204"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae9bdcb8ac91731109dc423d6ed476204">&#9670;&nbsp;</a></span>ConvertResizeMethodToAclInterpolationPolicy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::InterpolationPolicy armnn::ConvertResizeMethodToAclInterpolationPolicy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
+ <td class="paramname"><em>resizeMethod</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a51e8b95a429e11678ffa8b9fdc88351b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a51e8b95a429e11678ffa8b9fdc88351b">&#9670;&nbsp;</a></span>ConvertWeightTensorFromArmnnToAcl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> ConvertWeightTensorFromArmnnToAcl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>weightTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>permuteBuffer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1e8288eac7e909fdb58b6113d816763a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e8288eac7e909fdb58b6113d816763a">&#9670;&nbsp;</a></span>ConvertWeightTensorInfoFromArmnnToAcl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> ConvertWeightTensorInfoFromArmnnToAcl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weightInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_workload_utils_8hpp_source.xhtml#l00192">GatherTensorHandlePairs()</a>.</p>
+<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>
+<div class="ttc" id="namespacearmnn_utils_xhtml_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00098">Permute.cpp:98</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af98115cd07776d3fa8424434d2a7a897"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af98115cd07776d3fa8424434d2a7a897">&#9670;&nbsp;</a></span>Convolve()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Convolve </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>rInputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rInputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>rOutputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rOutputEncoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>rFilterShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rFilterDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>biasEnabled</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *&#160;</td>
+ <td class="paramname"><em>pBiasDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>paddingTop</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>paddingLeft</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>xStride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>yStride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>xDilation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>yDilation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>depthwise</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a73447f827b995cf90d4029151514b4ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a73447f827b995cf90d4029151514b4ba">&#9670;&nbsp;</a></span>CopyArmComputeClTensorData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::CopyArmComputeClTensorData </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
+ <td class="paramname"><em>dstTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>srcData</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_cl_workload_utils_8hpp_source.xhtml#l00020">ARMNN_SCOPED_PROFILING_EVENT_CL</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_cl_constant_workload_8cpp_source.xhtml#l00024">ClConstantWorkload::Execute()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1351e01f9fb983937caf79e353142b41"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1351e01f9fb983937caf79e353142b41">&#9670;&nbsp;</a></span>CopyArmComputeTensorData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::CopyArmComputeTensorData </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
+ <td class="paramname"><em>dstTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>srcData</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_workload_utils_8hpp_source.xhtml#l00035">InitializeArmComputeTensorData()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a92c91193007aa49f4732d6dba5397f8d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92c91193007aa49f4732d6dba5397f8d">&#9670;&nbsp;</a></span>CopyTensorContentsGeneric()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::CopyTensorContentsGeneric </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>srcTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>dstTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CopyFunc&#160;</td>
+ <td class="paramname"><em>copy</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5e783a951642781b9e7b55db06a514b7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e783a951642781b9e7b55db06a514b7">&#9670;&nbsp;</a></span>CreateAclNormalizationLayerInfoForL2Normalization()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::NormalizationLayerInfo armnn::CreateAclNormalizationLayerInfoForL2Normalization </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>tensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">armnn::DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f"><div class="ttname"><a href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">armnn::DataLayout::NCHW</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a733ae6b70d0bfa43433c3e7606992328"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a733ae6b70d0bfa43433c3e7606992328">&#9670;&nbsp;</a></span>CreateDescriptorForConcatenation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> armnn::CreateDescriptorForConcatenation </td>
+ <td>(</td>
+ <td class="paramtype">TensorShapeIt&#160;</td>
+ <td class="paramname"><em>first</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">TensorShapeIt&#160;</td>
+ <td class="paramname"><em>last</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>concatenationDimension</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2fe587812a8dd3e7d7419cbb84a7f4ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2fe587812a8dd3e7d7419cbb84a7f4ff">&#9670;&nbsp;</a></span>CreateMergerDescriptorForConcatenation()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> armnn::CreateMergerDescriptorForConcatenation </td>
+ <td>(</td>
+ <td class="paramtype">TensorShapeIt&#160;</td>
+ <td class="paramname"><em>first</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">TensorShapeIt&#160;</td>
+ <td class="paramname"><em>last</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>concatenationDimension</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00242">CreateDescriptorForConcatenation()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5fbc1479db5f4ff70a750cf02d58971b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5fbc1479db5f4ff70a750cf02d58971b">&#9670;&nbsp;</a></span>CreateNetworkWithActivationLayer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithActivationLayer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00406">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aad4b8cb9a4d882a48bc21510f0d1a938"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aad4b8cb9a4d882a48bc21510f0d1a938">&#9670;&nbsp;</a></span>CreateNetworkWithFullyConnectedLayer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithFullyConnectedLayer </td>
+ <td>(</td>
+ <td class="paramtype">const bool&#160;</td>
+ <td class="paramname"><em>biasEnabled</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputShape</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01098">ValidateFullyConnectedLayer()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa9c6c1a7b5380a99a536f4740f87dd59"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9c6c1a7b5380a99a536f4740f87dd59">&#9670;&nbsp;</a></span>CreateNetworkWithInputOutputLayers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithInputOutputLayers </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l00345">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9c91b774c3089c55df77cc3a42da72de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c91b774c3089c55df77cc3a42da72de">&#9670;&nbsp;</a></span>CreateNetworkWithSoftmaxLayer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ace74f6f9feb95a964a49d79458232703">INetworkPtr</a> armnn::CreateNetworkWithSoftmaxLayer </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01487">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a310dd804fd70eadb1e8854325e63f0bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a310dd804fd70eadb1e8854325e63f0bd">&#9670;&nbsp;</a></span>CreateQuantizedConst()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> CreateQuantizedConst </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;&#160;</td>
+ <td class="paramname"><em>tensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; uint8_t &gt; &amp;&#160;</td>
+ <td class="paramname"><em>backing</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a120c131df35d78b3a56cb0f07decaf35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a120c131df35d78b3a56cb0f07decaf35">&#9670;&nbsp;</a></span>CreateStartOfLeakyReluNetwork()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_i_connectable_layer.xhtml">IConnectableLayer</a>* armnn::CreateStartOfLeakyReluNetwork </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
+ <td class="paramname"><em>network</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01620">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a1ec6b4c20ed294a96cf94c33c24caaf5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1ec6b4c20ed294a96cf94c33c24caaf5">&#9670;&nbsp;</a></span>CreateSupportedBackends()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> CreateSupportedBackends </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>handleFactoryRegistry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00890">Optimize()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5aae369ef847a00062925cea8e9be9c4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5aae369ef847a00062925cea8e9be9c4">&#9670;&nbsp;</a></span>Debug()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Debug </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_debug_workload_8cpp_source.xhtml#l00018">RefDebugWorkload&lt; DataType &gt;::Execute()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a43791bdad23b9c3dd62711c03f793881"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43791bdad23b9c3dd62711c03f793881">&#9670;&nbsp;</a></span>Debug< BFloat16 >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="a26abbe393a88835dd569523bec69719b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a26abbe393a88835dd569523bec69719b">&#9670;&nbsp;</a></span>Debug< float >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; float &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="a3b0ab9518e3fd6a0447c174df57a313c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b0ab9518e3fd6a0447c174df57a313c">&#9670;&nbsp;</a></span>Debug< Half >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="acc771f233bb7884932260ba353118b46"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc771f233bb7884932260ba353118b46">&#9670;&nbsp;</a></span>Debug< int16_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int16_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int16_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="a7c1cb9cf0678f74b1dcfff310d1475fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7c1cb9cf0678f74b1dcfff310d1475fd">&#9670;&nbsp;</a></span>Debug< int32_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int32_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int32_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="ac2167b3a09fab7c9b58af461bd990c3b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac2167b3a09fab7c9b58af461bd990c3b">&#9670;&nbsp;</a></span>Debug< int8_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; int8_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int8_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="a1121718a486db835afa99328650e7e89"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1121718a486db835afa99328650e7e89">&#9670;&nbsp;</a></span>Debug< uint8_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a5aae369ef847a00062925cea8e9be9c4">armnn::Debug</a>&lt; uint8_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const uint8_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#afad4088a9a058114ee5f87246f87bf49">LayerGuid</a>&#160;</td>
+ <td class="paramname"><em>guid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>layerName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>slotIndex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_debug_8cpp_source.xhtml#l00020">Debug()</a>.</p>
+
+</div>
+</div>
+<a id="ab023d9a7687e35c0f108458a094c1f56"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab023d9a7687e35c0f108458a094c1f56">&#9670;&nbsp;</a></span>DepthToSpace()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DepthToSpace </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>outputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>dataTypeSize</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acae7e910f899ae67340c9ce29e406a86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acae7e910f899ae67340c9ce29e406a86">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Dequantize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputEncoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4144d7535639c617fca0d095379493f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4144d7535639c617fca0d095379493f0">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;float&gt; armnn::Dequantize </td>
+ <td>(</td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>quant</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>u8 helpers </p>
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1204727d8ce3ee1e60daf08079eb892e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1204727d8ce3ee1e60daf08079eb892e">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::Dequantize </td>
+ <td>(</td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>outputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a855293b1be0581fb61ef6a1c5b027d0f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a855293b1be0581fb61ef6a1c5b027d0f">&#9670;&nbsp;</a></span>Dequantize() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float Dequantize </td>
+ <td>(</td>
+ <td class="paramtype">QuantizedType&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>scale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Dequantize an 8-bit data type into a floating point data type. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">value</td><td>- The value to dequantize. </td></tr>
+ <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
+ <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>- The dequantized value calculated as (value-offset)*scale. </dd></dl>
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae76ce23fa9fc18e56448d52b37dd3f32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae76ce23fa9fc18e56448d52b37dd3f32">&#9670;&nbsp;</a></span>DetectionPostProcess()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void DetectionPostProcess </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>boxEncodingsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>scoresInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>anchorsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionBoxesInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionClassesInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionScoresInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>numDetectionsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>boxEncodings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>scores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>anchors</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionBoxes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionClasses</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>detectionScores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>numDetections</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_detection_post_process_tests_8cpp_source.xhtml#l00072">DetectionPostProcessTestImpl()</a>.</p>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a50805c29c35b9903c2dea301d8091711"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a50805c29c35b9903c2dea301d8091711">&#9670;&nbsp;</a></span>ExtractJsonObjects()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ExtractJsonObjects </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>inferenceIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
+ <td class="paramname"><em>parentEvent</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_json_child_object.xhtml">JsonChildObject</a> &amp;&#160;</td>
+ <td class="paramname"><em>parentObject</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>descendantsMap</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00331">Profiler::Print()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab3c0b7e1a78b1b98c24934221f36a7c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab3c0b7e1a78b1b98c24934221f36a7c3">&#9670;&nbsp;</a></span>FakeQuantization()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::FakeQuantization </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>outputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>numElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>min</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>max</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00033">numeric_cast()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6e64aab48baba12883c73e90bfd07e77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e64aab48baba12883c73e90bfd07e77">&#9670;&nbsp;</a></span>FalseFunc()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseFunc </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a621c8ffe11bba3d7ab304a9ad3feec2f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a621c8ffe11bba3d7ab304a9ad3feec2f">&#9670;&nbsp;</a></span>FalseFuncF16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseFuncF16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a02d627e25da543b79ee8a59a1193a426"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a02d627e25da543b79ee8a59a1193a426">&#9670;&nbsp;</a></span>FalseFuncF32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseFuncF32 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a07ae80b502ab664f1aaf7d6c00725982"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07ae80b502ab664f1aaf7d6c00725982">&#9670;&nbsp;</a></span>FalseFuncI32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseFuncI32 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4e4802d0916cb8b7da508ab03ce1f163"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e4802d0916cb8b7da508ab03ce1f163">&#9670;&nbsp;</a></span>FalseFuncU8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseFuncU8 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a216969fbba54df95de3e68435b8074d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a216969fbba54df95de3e68435b8074d7">&#9670;&nbsp;</a></span>FalseInputFuncF16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseInputFuncF16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0b55e509dd7e3bfea233a389a18c21e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b55e509dd7e3bfea233a389a18c21e6">&#9670;&nbsp;</a></span>FalseInputFuncF32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseInputFuncF32 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2febf8d85a92b69e4a677a7c632418ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2febf8d85a92b69e4a677a7c632418ee">&#9670;&nbsp;</a></span>FalseOutputFuncF16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseOutputFuncF16 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad3d0087e2533d808debd5c959fb3901f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad3d0087e2533d808debd5c959fb3901f">&#9670;&nbsp;</a></span>FalseOutputFuncF32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::FalseOutputFuncF32 </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1b90db39f6a9ebd11591e76fa364b06f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b90db39f6a9ebd11591e76fa364b06f">&#9670;&nbsp;</a></span>FindKernelMeasurements()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;<a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a>&gt; armnn::FindKernelMeasurements </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
+ <td class="paramname"><em>event</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a12d3ffe11b54c0aaa59bdd8415701c36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a12d3ffe11b54c0aaa59bdd8415701c36">&#9670;&nbsp;</a></span>FindMeasurement()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_measurement.xhtml">Measurement</a> armnn::FindMeasurement </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>name</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
+ <td class="paramname"><em>event</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_profiling_event_8cpp_source.xhtml#l00054">Event::GetMeasurements()</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afce94270d9c4a51cd0c4ac6a58af4e26"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afce94270d9c4a51cd0c4ac6a58af4e26">&#9670;&nbsp;</a></span>ForEachLayerInput()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ForEachLayerInput </td>
+ <td>(</td>
+ <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
+ <td class="paramname"><em>layerInfos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
+ <td class="paramname"><em>layerInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Delegate&#160;</td>
+ <td class="paramname"><em>function</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00231">Layer::GetInputSlots()</a>.</p>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a49538fa883b70c944e437d65d6628eec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49538fa883b70c944e437d65d6628eec">&#9670;&nbsp;</a></span>ForEachLayerOutput()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ForEachLayerOutput </td>
+ <td>(</td>
+ <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
+ <td class="paramname"><em>layerInfos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
+ <td class="paramname"><em>layerInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Delegate&#160;</td>
+ <td class="paramname"><em>function</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_8hpp_source.xhtml#l00232">Layer::GetOutputSlots()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad34d1d5b1ca8f52dc296ecf52ba20c8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad34d1d5b1ca8f52dc296ecf52ba20c8a">&#9670;&nbsp;</a></span>FullyConnected()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void FullyConnected </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>rInputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rInputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>rOutputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rOutputEncoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rWeightDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rBiasDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const bool&#160;</td>
+ <td class="paramname"><em>biasEnabled</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned int&#160;</td>
+ <td class="paramname"><em>K</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const bool&#160;</td>
+ <td class="paramname"><em>transposeWeights</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Performs a matrix multiplication and optionally adds a bias. </p>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a66004b2326f8ccb1faa71d5efa186633"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a66004b2326f8ccb1faa71d5efa186633">&#9670;&nbsp;</a></span>Gather()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Gather </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>indicesInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>params</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int32_t *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afb5b53a8b0c01d4f27830bef0f25ca09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb5b53a8b0c01d4f27830bef0f25ca09">&#9670;&nbsp;</a></span>GatherTensorHandlePairs()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::GatherTensorHandlePairs </td>
+ <td>(</td>
+ <td class="paramtype">const DescriptorType &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; SrcTensorHandleType *, DstTensorHandleType *&gt;&gt; &amp;&#160;</td>
+ <td class="paramname"><em>tensorHandlePairs</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ae8ed5c640761fb6744aec0ee16388417"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8ed5c640761fb6744aec0ee16388417">&#9670;&nbsp;</a></span>GenerateRangeK()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;unsigned int&gt; armnn::GenerateRangeK </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>k</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aa093207ea7c4e7a9c9abe40d2f57995b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa093207ea7c4e7a9c9abe40d2f57995b">&#9670;&nbsp;</a></span>GetActivationFunctionAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetActivationFunctionAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56297e0f7b215eea46c818cb7528d9ea">ActivationFunction</a>&#160;</td>
+ <td class="paramname"><em>activation</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00042">StringifyLayerParameters&lt; ActivationDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a5cda3502382f06a64c3cbeb1829bd850"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5cda3502382f06a64c3cbeb1829bd850">&#9670;&nbsp;</a></span>GetArgMinMaxFunctionAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetArgMinMaxFunctionAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeae">ArgMinMaxFunction</a>&#160;</td>
+ <td class="paramname"><em>function</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea6a061313d22e51e0f25b7cd4dc065233">Max</a>, and <a class="el" href="namespacearmnn.xhtml#ae7e8cbf71db6a490789ca6dcaa8deeaea78d811e98514cd165dda532286610fd2">Min</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a872803f5667392efc3c8e5607bd453ad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a872803f5667392efc3c8e5607bd453ad">&#9670;&nbsp;</a></span>GetBiasDataType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> GetBiasDataType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>inputDataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a83c4a275acf59f62b8387f389d0929d5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a83c4a275acf59f62b8387f389d0929d5">&#9670;&nbsp;</a></span>GetBiasTypeFromWeightsType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <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>
+ <td class="paramname"><em>weightsType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
+<div class="ttc" id="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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aabb76a77e95921785f576bb29b495cd8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aabb76a77e95921785f576bb29b495cd8">&#9670;&nbsp;</a></span>GetComparisonOperationAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetComparisonOperationAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a2d299363c9fc33334c571fa29ca4f58c">ComparisonOperation</a>&#160;</td>
+ <td class="paramname"><em>operation</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_comparison_workload_8cpp_source.xhtml#l00039">RefComparisonWorkload::Execute()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6bab17bfd45c2fa4592c431bc25ad10e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6bab17bfd45c2fa4592c431bc25ad10e">&#9670;&nbsp;</a></span>GetComputeDeviceAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetComputeDeviceAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a>&#160;</td>
+ <td class="paramname"><em>compute</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Deprecated function that will be removed together with the Compute enum. </p>
+
+<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>
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aeef70b7611ae71e97ab55c75ef72b210"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeef70b7611ae71e97ab55c75ef72b210">&#9670;&nbsp;</a></span>GetDataLayoutName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::GetDataLayoutName </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0a6b99f356fe3b30a2a850b5ea897c289f">NCHW</a>, and <a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0ad066db54b89b0912e7e7c6da51e2da51">NHWC</a>.</p>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a81b5ff8545adad19a1c9d4ca076d552c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81b5ff8545adad19a1c9d4ca076d552c">&#9670;&nbsp;</a></span>GetDataTypeName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::GetDataTypeName </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa02b9e06fb20fa3c13da0427e6ee5ab2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa02b9e06fb20fa3c13da0427e6ee5ab2">&#9670;&nbsp;</a></span>GetDataTypeSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr unsigned int armnn::GetDataTypeSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab03dcfb3b4019d8f58a67c41681951ae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab03dcfb3b4019d8f58a67c41681951ae">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a>* armnn::GetEventPtr </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> *&#160;</td>
+ <td class="paramname"><em>ptr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00115">Profiler::AnalyzeEventSequenceAndWriteResults()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a4b1e2158af2aedd3f00d2121c45b0f93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4b1e2158af2aedd3f00d2121c45b0f93">&#9670;&nbsp;</a></span>GetEventPtr() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_event.xhtml">Event</a>* armnn::GetEventPtr </td>
+ <td>(</td>
+ <td class="paramtype">const std::unique_ptr&lt; <a class="el" href="classarmnn_1_1_event.xhtml">Event</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>ptr</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a5974a183710829851dbd98a4a919cd50"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5974a183710829851dbd98a4a919cd50">&#9670;&nbsp;</a></span>GetILayerSupportByBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::shared_ptr&lt; <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> &gt; GetILayerSupportByBackendId </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Convenience function to retrieve the <a class="el" href="classarmnn_1_1_i_layer_support.xhtml">ILayerSupport</a> for a backend. </p>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af487cc4568faf50403f12ed1c7a70a2d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af487cc4568faf50403f12ed1c7a70a2d">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* armnn::GetInputTensorData </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2187ea15b1ae8c323a0cc5c211fc43d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2187ea15b1ae8c323a0cc5c211fc43d9">&#9670;&nbsp;</a></span>GetInputTensorData() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetInputTensorData </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a691846a9eee59b0cd5b22fb5f674e007"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a691846a9eee59b0cd5b22fb5f674e007">&#9670;&nbsp;</a></span>GetInputTensorDataFloat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float* armnn::GetInputTensorDataFloat </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a084b0ce273bef78aa314bd97fc574b84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a084b0ce273bef78aa314bd97fc574b84">&#9670;&nbsp;</a></span>GetInputTensorDataHalf()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetInputTensorDataHalf </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_convert_fp16_to_fp32_workload_8cpp_source.xhtml#l00016">RefConvertFp16ToFp32Workload::Execute()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ae52296dff1f4879854f320d59f92574e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae52296dff1f4879854f320d59f92574e">&#9670;&nbsp;</a></span>GetInputTensorInfo()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> armnn::GetInputTensorInfo </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_network.xhtml">Network</a> *&#160;</td>
+ <td class="paramname"><em>network</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a9da573d7a1fc03726fd41f2130cbcf92"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9da573d7a1fc03726fd41f2130cbcf92">&#9670;&nbsp;</a></span>GetLayerTypeAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * GetLayerTypeAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a>&#160;</td>
+ <td class="paramname"><em>type</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aeadd602e128a2be97161345b48533417"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeadd602e128a2be97161345b48533417">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmChannelAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmChannelAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437">NormalizationAlgorithmChannel</a>&#160;</td>
+ <td class="paramname"><em>channel</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a810f43f3996922151c39b76143faeecc">Across</a>, and <a class="el" href="namespacearmnn.xhtml#abe18a5033f2ab9c0de82c676b48f5437a37bac6dce4f46277d89bfa3003e2e39b">Within</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ad57460ea53cd0b519a3b3547eaf1db7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad57460ea53cd0b519a3b3547eaf1db7c">&#9670;&nbsp;</a></span>GetNormalizationAlgorithmMethodAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::GetNormalizationAlgorithmMethodAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9">NormalizationAlgorithmMethod</a>&#160;</td>
+ <td class="paramname"><em>method</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9ac65d2e51c610dd3853a3c777aa8bfe9d">LocalBrightness</a>, and <a class="el" href="namespacearmnn.xhtml#ad605d1661fa0d8c7fea651d82fbe11c9aa94d2fcabc6b001015aeddfa19266e6f">LocalContrast</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00228">StringifyLayerParameters&lt; NormalizationDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="adafb0fd0a3f6435c2bdf41f971761ecf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adafb0fd0a3f6435c2bdf41f971761ecf">&#9670;&nbsp;</a></span>GetOffset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int armnn::GetOffset </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>h</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>w</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
+ <td class="paramname"><em>dataLayout</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a67d7ce2e14ebd328f423322db88279c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a67d7ce2e14ebd328f423322db88279c3">&#9670;&nbsp;</a></span>GetOutputShapeRoundingAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetOutputShapeRoundingAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754e">OutputShapeRounding</a>&#160;</td>
+ <td class="paramname"><em>rounding</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754ea3237fbc8204064c106cb9080088a17cb">Ceiling</a>, and <a class="el" href="namespacearmnn.xhtml#adf2e5515c4c36a3e7e46bb8b83c6754eaf3f6d0343d56ce88ce7958170ed05cb3">Floor</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a932b4856d89c58865e1f39ec5ab6b841"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a932b4856d89c58865e1f39ec5ab6b841">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float* armnn::GetOutputTensorData </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_addition_queue_descriptor.xhtml">AdditionQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2c0b2e5bd1b03aec10473a201f57f859"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c0b2e5bd1b03aec10473a201f57f859">&#9670;&nbsp;</a></span>GetOutputTensorData() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>* armnn::GetOutputTensorData </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml#a9afbc055a017adf1bc38ee137bca6e90">ITensorHandle::Map()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_sample_dynamic_addition_workload_8cpp_source.xhtml#l00039">SampleDynamicAdditionWorkload::Execute()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab5f0afc1e37fd100843ecd55d8f284c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab5f0afc1e37fd100843ecd55d8f284c1">&#9670;&nbsp;</a></span>GetOutputTensorDataFloat()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float* armnn::GetOutputTensorDataFloat </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ab98e77207c3d676b0b9ffa67357dbc6a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab98e77207c3d676b0b9ffa67357dbc6a">&#9670;&nbsp;</a></span>GetOutputTensorDataHalf()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a>* armnn::GetOutputTensorDataHalf </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>idx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const PayloadType &amp;&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_convert_fp32_to_fp16_workload_8cpp_source.xhtml#l00017">RefConvertFp32ToFp16Workload::Execute()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a129bde68152f5892e6abdedcb62aa983"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a129bde68152f5892e6abdedcb62aa983">&#9670;&nbsp;</a></span>GetPaddingMethodAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetPaddingMethodAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2f">PaddingMethod</a>&#160;</td>
+ <td class="paramname"><em>method</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2fa843f2812f595e7ec7c5036e89fde02d6">Exclude</a>, and <a class="el" href="namespacearmnn.xhtml#a3888429b6ebc79f9a7df549e5e4d9a2faad301514192636ad34210adce598a45a">IgnoreValue</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a517314c21ac5309b90408da162212f9d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a517314c21ac5309b90408da162212f9d">&#9670;&nbsp;</a></span>GetPoolingAlgorithmAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetPoolingAlgorithmAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a961bbfe1db71a848eff5a1f0ab775718">PoolingAlgorithm</a>&#160;</td>
+ <td class="paramname"><em>pooling</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00110">StringifyLayerParameters&lt; Pooling2dDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a49a398090bc1044038300ce246821a1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49a398090bc1044038300ce246821a1f">&#9670;&nbsp;</a></span>GetProfilerEventSequenceSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">size_t armnn::GetProfilerEventSequenceSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_profiler.xhtml">armnn::Profiler</a> *&#160;</td>
+ <td class="paramname"><em>profiler</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_profiler_tests_8cpp_source.xhtml#l00110">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aded981a42027bd3302b9c0f09d988659"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aded981a42027bd3302b9c0f09d988659">&#9670;&nbsp;</a></span>GetResizeMethodAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::GetResizeMethodAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">ResizeMethod</a>&#160;</td>
+ <td class="paramname"><em>method</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">Bilinear</a>, and <a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">NearestNeighbor</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_serialize_layer_parameters_8cpp_source.xhtml#l00298">StringifyLayerParameters&lt; ResizeDescriptor &gt;::Serialize()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a19a90c41ca2f46ab29918fef1a6ad72e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a19a90c41ca2f46ab29918fef1a6ad72e">&#9670;&nbsp;</a></span>GetStatusAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetStatusAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
+ <td class="paramname"><em>status</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">Failure</a>, and <a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70ba505a83f220c02df2f85c3810cd9ceb38">Success</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.xhtml#l00256">operator&lt;&lt;()</a>.</p>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086"><div class="ttname"><a href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70bae139a585510a502bbf1841cf589f5086">armnn::Status::Failure</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a93d269806f34407695dc10f510001c30"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93d269806f34407695dc10f510001c30">&#9670;&nbsp;</a></span>GetTensorInfo()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp; GetTensorInfo </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_tensor_handle.xhtml">ITensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>tensorHandle</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>float32 helpers </p>
+
+<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>
+
+<p class="reference">References <a class="el" href="_ref_tensor_handle_8hpp_source.xhtml#l00050">RefTensorHandle::GetTensorInfo()</a>.</p>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a6dac966f265381903c8ef4f392becced"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6dac966f265381903c8ef4f392becced">&#9670;&nbsp;</a></span>GetUnaryOperationAsCString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr char const* armnn::GetUnaryOperationAsCString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a1cfaa710db2a54673b21d2ea2da757c8">UnaryOperation</a>&#160;</td>
+ <td class="paramname"><em>operation</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_elementwise_unary_workload_8cpp_source.xhtml#l00041">RefElementwiseUnaryWorkload::Execute()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a36e8f52330a21eeab3cc7c4e030f3583"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36e8f52330a21eeab3cc7c4e030f3583">&#9670;&nbsp;</a></span>GetUnpaddedTensorStrides()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> GetUnpaddedTensorStrides </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>tensorInfo</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a44affeeb090c3c6a3062830562672e84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a44affeeb090c3c6a3062830562672e84">&#9670;&nbsp;</a></span>IgnoreUnused()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::IgnoreUnused </td>
+ <td>(</td>
+ <td class="paramtype">Ts &amp;&amp;&#160;</td>
+ <td class="paramname"><em>...</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<div class="fragment"><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;{}</div></div><!-- fragment -->
+</div>
+</div>
+<a id="a46747c3d0b99968be0b37d74bc9687dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46747c3d0b99968be0b37d74bc9687dd">&#9670;&nbsp;</a></span>InitializeArmComputeClTensorData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::InitializeArmComputeClTensorData </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::CLTensor &amp;&#160;</td>
+ <td class="paramname"><em>clTensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>handle</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad9aa8d49d42ada3f757290033af39857"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad9aa8d49d42ada3f757290033af39857">&#9670;&nbsp;</a></span>InitializeArmComputeTensorData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::InitializeArmComputeTensorData </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::Tensor &amp;&#160;</td>
+ <td class="paramname"><em>tensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>handle</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad31c56533e4f9f9f51719599fbfcf7bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad31c56533e4f9f9f51719599fbfcf7bb">&#9670;&nbsp;</a></span>InsertConvertFp16ToFp32LayersBefore()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> * &gt; InsertConvertFp16ToFp32LayersBefore </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>graph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
+ <td class="paramname"><em>layer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>expectCorrectInputType</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="abf625e50a5eaeafce5b39580dc95a9d3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf625e50a5eaeafce5b39580dc95a9d3">&#9670;&nbsp;</a></span>InsertConvertFp32ToFp16LayersAfter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> * &gt; InsertConvertFp32ToFp16LayersAfter </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>graph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
+ <td class="paramname"><em>layer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a2616ffdae2db993af5c08019fb61860a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2616ffdae2db993af5c08019fb61860a">&#9670;&nbsp;</a></span>InsertDebugLayerAfter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt; <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> * &gt; InsertDebugLayerAfter </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>graph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> &amp;&#160;</td>
+ <td class="paramname"><em>layer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ac3d98d09064176b259e8a9038b06699d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac3d98d09064176b259e8a9038b06699d">&#9670;&nbsp;</a></span>InstanceNorm()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void InstanceNorm </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_queue_descriptor.xhtml">InstanceNormalizationQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputEncoder</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_instance_normalization_workload_8cpp_source.xhtml#l00021">RefInstanceNormalizationWorkload::Execute()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abf6aad7bc221f8ad22b4d99cd020373b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf6aad7bc221f8ad22b4d99cd020373b">&#9670;&nbsp;</a></span>IntersectionOverUnion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float IntersectionOverUnion </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>boxI</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>boxJ</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a58bfb9626d373249745d78b95543116e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58bfb9626d373249745d78b95543116e">&#9670;&nbsp;</a></span>IsActivationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsActivationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1b01771dc5a057d09f8cd82492154a1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b01771dc5a057d09f8cd82492154a1f">&#9670;&nbsp;</a></span>IsAdditionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsAdditionSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa8d5d17d1edd51d899fe699eb6156b58"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa8d5d17d1edd51d899fe699eb6156b58">&#9670;&nbsp;</a></span>IsArgMinMaxSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsArgMinMaxSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7d18d6613bb865b66b05d4d6e0391934"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7d18d6613bb865b66b05d4d6e0391934">&#9670;&nbsp;</a></span>IsBatchNormalizationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsBatchNormalizationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>mean</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>var</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>beta</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>gamma</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2399052d9cbb2b88720b07511a2e362f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2399052d9cbb2b88720b07511a2e362f">&#9670;&nbsp;</a></span>IsBatchToSpaceNdSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsBatchToSpaceNdSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3d504240723912bf9c76ff3afeaa25c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3d504240723912bf9c76ff3afeaa25c5">&#9670;&nbsp;</a></span>IsBFloat16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsBFloat16 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a757df85e956e425c1a082d35a98ca4a9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a757df85e956e425c1a082d35a98ca4a9">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsConcatSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="ae1fc9dbaad02fff7f7227cc10536e1ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae1fc9dbaad02fff7f7227cc10536e1ee">&#9670;&nbsp;</a></span>IsConcatSupported() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsConcatSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acc76cdec78906a3457a9c2293a453869"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc76cdec78906a3457a9c2293a453869">&#9670;&nbsp;</a></span>IsConstantSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsConstantSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aaa152f86599af5189c9d637fe7ade6d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa152f86599af5189c9d637fe7ade6d0">&#9670;&nbsp;</a></span>IsConvertFp16ToFp32Supported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsConvertFp16ToFp32Supported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a98994026cec1578ceb7aa74c834b00d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a98994026cec1578ceb7aa74c834b00d9">&#9670;&nbsp;</a></span>IsConvertFp32ToFp16Supported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsConvertFp32ToFp16Supported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af22d4421773ce95e0f2324fc1a66c0d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af22d4421773ce95e0f2324fc1a66c0d9">&#9670;&nbsp;</a></span>IsConvolution2dSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsConvolution2dSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6a2e058d934e9d784eab57ee7121d69c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a2e058d934e9d784eab57ee7121d69c">&#9670;&nbsp;</a></span>IsDataType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsDataType </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8b96de58aae24091d0ad761f27360630"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b96de58aae24091d0ad761f27360630">&#9670;&nbsp;</a></span>IsDebugSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsDebugSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a399d38872500c6ac84ae031673176ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a399d38872500c6ac84ae031673176ef3">&#9670;&nbsp;</a></span>IsDepthwiseConvolutionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsDepthwiseConvolutionSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_layer_support_8cpp_source.xhtml#l00693">RefLayerSupport::IsDilatedDepthwiseConvolutionSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac92dceabfbc1e46fe74f699f733886a8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac92dceabfbc1e46fe74f699f733886a8">&#9670;&nbsp;</a></span>IsDequantizeSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsDequantizeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa9da770c93f812b264861f98cfdd650c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9da770c93f812b264861f98cfdd650c">&#9670;&nbsp;</a></span>IsDetectionPostProcessSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsDetectionPostProcessSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00232">IsDequantizeSupported()</a>.</p>
+
+</div>
+</div>
+<a id="a29b4b6b364a31632597970d0bad3d78f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a29b4b6b364a31632597970d0bad3d78f">&#9670;&nbsp;</a></span>IsDivisionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsDivisionSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0e3cdea6143299b258a9c34b596bad4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e3cdea6143299b258a9c34b596bad4d">&#9670;&nbsp;</a></span>IsEqualSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsEqualSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afe39427f8974f064b838df5c7f0ebebc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe39427f8974f064b838df5c7f0ebebc">&#9670;&nbsp;</a></span>IsFakeQuantizationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsFakeQuantizationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_fake_quantization_descriptor.xhtml">FakeQuantizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad78d822be14a8d585cd038cf0e73cd7e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad78d822be14a8d585cd038cf0e73cd7e">&#9670;&nbsp;</a></span>IsFloat16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsFloat16 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a89e9c52419c572f05bf9737a7a60b267"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a89e9c52419c572f05bf9737a7a60b267">&#9670;&nbsp;</a></span>IsFloorSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsFloorSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa2f4e75d4a4f61b24de0dfe150952c80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa2f4e75d4a4f61b24de0dfe150952c80">&#9670;&nbsp;</a></span>IsFullyConnectedSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsFullyConnectedSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a658eea4e746b1e664796c48d7eaf19f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a658eea4e746b1e664796c48d7eaf19f0">&#9670;&nbsp;</a></span>IsGatherSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsGatherSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="adffa596b4bdecd54ca460853cd1439e2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adffa596b4bdecd54ca460853cd1439e2">&#9670;&nbsp;</a></span>IsGreaterSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsGreaterSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a197a353aa963497d29a07796268ea5c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a197a353aa963497d29a07796268ea5c1">&#9670;&nbsp;</a></span>IsInputSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsInputSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0906736b90464c0eb3ce5a87e05ebeee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0906736b90464c0eb3ce5a87e05ebeee">&#9670;&nbsp;</a></span>IsL2NormalizationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsL2NormalizationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3e8b3af7771ffb37ede50aa2d9cc3af6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e8b3af7771ffb37ede50aa2d9cc3af6">&#9670;&nbsp;</a></span>IsLstmSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsLstmSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>scratchBuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3b85a270baf98ea6b040bd395c2d700a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b85a270baf98ea6b040bd395c2d700a">&#9670;&nbsp;</a></span>IsMaximumSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMaximumSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnSupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnSupportedMaxLength</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0cdc60b4988b2193b97590e35f34a07e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0cdc60b4988b2193b97590e35f34a07e">&#9670;&nbsp;</a></span>IsMeanSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMeanSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a87ac712443e46c0deb38ab0eaf637e70"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87ac712443e46c0deb38ab0eaf637e70">&#9670;&nbsp;</a></span>IsMemCopySupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMemCopySupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a99260bf94e4f8d0c8a527970cd52ce93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a99260bf94e4f8d0c8a527970cd52ce93">&#9670;&nbsp;</a></span>IsMemImportSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsMemImportSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6e2c7ec2b8d47bde2bc9fa04bb2091f6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e2c7ec2b8d47bde2bc9fa04bb2091f6">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsMergerSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00414">IsMergerSupported()</a>.</p>
+
+</div>
+</div>
+<a id="adf5de1faf58e2eea99a932883edc3ed0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adf5de1faf58e2eea99a932883edc3ed0">&#9670;&nbsp;</a></span>IsMergerSupported() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsMergerSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7f518a73b9f7e41c5584c1f49bca8568"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7f518a73b9f7e41c5584c1f49bca8568">&#9670;&nbsp;</a></span>IsMergeSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMergeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab99d3d944b80f47bd1be70f63cc60abb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab99d3d944b80f47bd1be70f63cc60abb">&#9670;&nbsp;</a></span>IsMinimumSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMinimumSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a56ff60c2946bf0b7e772007acce0d7ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56ff60c2946bf0b7e772007acce0d7ec">&#9670;&nbsp;</a></span>IsMultiplicationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsMultiplicationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a754b0ac19fd6341ce2b5f480c3b35e8e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a754b0ac19fd6341ce2b5f480c3b35e8e">&#9670;&nbsp;</a></span>IsNormalizationSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsNormalizationSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad05c0670c947d35d39b3b0217e9975cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad05c0670c947d35d39b3b0217e9975cf">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
+ <td>(</td>
+ <td class="paramtype">const QueueDescriptorType &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a93e7b76d19b33076b2a4eae44014d5ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93e7b76d19b33076b2a4eae44014d5ea">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_mem_copy_queue_descriptor.xhtml">MemCopyQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a05323af66b9f762e269a27562a2bbdd0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a05323af66b9f762e269a27562a2bbdd0">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_constant_queue_descriptor.xhtml">ConstantQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a91332212b6a2cc9c0ea32af03c600b4f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a91332212b6a2cc9c0ea32af03c600b4f">&#9670;&nbsp;</a></span>IsOperationQueueDescriptor() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsOperationQueueDescriptor </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_queue_descriptor.xhtml">PermuteQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a701cecec7714cf8bc9dca804f473610d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a701cecec7714cf8bc9dca804f473610d">&#9670;&nbsp;</a></span>IsOutputSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsOutputSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_optimizer_tests_8cpp_source.xhtml#l00537">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a515e8a98d7ef9ecda64a2e1e5298461a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a515e8a98d7ef9ecda64a2e1e5298461a">&#9670;&nbsp;</a></span>IsPadSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsPadSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa3a1bea3b3cd5611f13c06020dababc4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa3a1bea3b3cd5611f13c06020dababc4">&#9670;&nbsp;</a></span>IsPermuteSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsPermuteSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aea548aa1485adbeeb3e393a13bb6bff8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea548aa1485adbeeb3e393a13bb6bff8">&#9670;&nbsp;</a></span>IsPooling2dSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsPooling2dSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3b4773564c3fd8c88e697ffe0afbe10d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b4773564c3fd8c88e697ffe0afbe10d">&#9670;&nbsp;</a></span>IsPreCompiledSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsPreCompiledSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a5a0c1871f7e4822adb8b15e8ae76bca0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5a0c1871f7e4822adb8b15e8ae76bca0">&#9670;&nbsp;</a></span>IsPreluSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsPreluSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>alpha</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a47d136a5519331dee24f5e01b206ae7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a47d136a5519331dee24f5e01b206ae7c">&#9670;&nbsp;</a></span>IsQAsymmS8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsQAsymmS8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a37c36bbf668cd8a0d7dcd731c9b591d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37c36bbf668cd8a0d7dcd731c9b591d7">&#9670;&nbsp;</a></span>IsQAsymmU8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsQAsymmU8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abcd0d843d5736b78740ae73249b6b977"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abcd0d843d5736b78740ae73249b6b977">&#9670;&nbsp;</a></span>IsQSymmS16()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsQSymmS16 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a09a7cd515c3b495e61b2a5116bf6a335"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09a7cd515c3b495e61b2a5116bf6a335">&#9670;&nbsp;</a></span>IsQSymmS8()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsQSymmS8 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad91bc7bfe29186f5d78c28386c6c5309"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad91bc7bfe29186f5d78c28386c6c5309">&#9670;&nbsp;</a></span>IsQuantized8BitType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsQuantized8BitType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4069381c4737d57fc7fd299a61ad9ca1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4069381c4737d57fc7fd299a61ad9ca1">&#9670;&nbsp;</a></span>IsQuantizedLstmSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsQuantizedLstmSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>previousCellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>previousOutputIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad44c007f21af2d0375e3ef9400a1b275"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad44c007f21af2d0375e3ef9400a1b275">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsQuantizedType </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aa172264d7075abf828e0b6894996a561"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa172264d7075abf828e0b6894996a561">&#9670;&nbsp;</a></span>IsQuantizedType() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::IsQuantizedType </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a599a95f708fa0b6a6230dc6c9e73ea3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a599a95f708fa0b6a6230dc6c9e73ea3e">&#9670;&nbsp;</a></span>IsQuantizeSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsQuantizeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6b10dc0d12c7f4a52ad01b9975dbe908"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b10dc0d12c7f4a52ad01b9975dbe908">&#9670;&nbsp;</a></span>IsReadyForSplitAssignment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsReadyForSplitAssignment </td>
+ <td>(</td>
+ <td class="paramtype">LayerSelectionInfo::LayerInfoContainer &amp;&#160;</td>
+ <td class="paramname"><em>layerInfos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">LayerSelectionInfo &amp;&#160;</td>
+ <td class="paramname"><em>layerInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00262">ForEachLayerInput()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_subgraph_view_selector_8cpp_source.xhtml#l00384">SubgraphViewSelector::SelectSubgraphs()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af5014cbc003abcf201d4372b0012734c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af5014cbc003abcf201d4372b0012734c">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsReshapeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00531">IsReshapeSupported()</a>.</p>
+
+</div>
+</div>
+<a id="a4bb384bc41a94bc7c3b4f543cd3fd437"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4bb384bc41a94bc7c3b4f543cd3fd437">&#9670;&nbsp;</a></span>IsReshapeSupported() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsReshapeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_reshape_descriptor.xhtml">ReshapeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a936d3f949a334668f839fb0bdd170b72"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a936d3f949a334668f839fb0bdd170b72">&#9670;&nbsp;</a></span>IsResizeBilinearSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsResizeBilinearSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a90a1aadb53c7537f225252afd681ff22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a90a1aadb53c7537f225252afd681ff22">&#9670;&nbsp;</a></span>IsResizeSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsResizeSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00552">IsResizeBilinearSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="accc42ba9679a474e75b43cdf1efa9422"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#accc42ba9679a474e75b43cdf1efa9422">&#9670;&nbsp;</a></span>IsRsqrtSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsRsqrtSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a87b99791ccf8793961db67ea19eb6fa4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87b99791ccf8793961db67ea19eb6fa4">&#9670;&nbsp;</a></span>IsSigned32()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsSigned32 </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_workload_info.xhtml">WorkloadInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">info</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_ref_workload_factory_8cpp_source.xhtml#l00203">RefWorkloadFactory::CreateDebug()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a477695b3df8c0abd2efcf02051f61065"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a477695b3df8c0abd2efcf02051f61065">&#9670;&nbsp;</a></span>IsSoftmaxSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSoftmaxSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4b3a41e24d4b9e2b4cb431dc90c48970"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4b3a41e24d4b9e2b4cb431dc90c48970">&#9670;&nbsp;</a></span>IsSpaceToBatchNdSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSpaceToBatchNdSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="addffaddb4bdb6ec506fe08debcce9b75"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#addffaddb4bdb6ec506fe08debcce9b75">&#9670;&nbsp;</a></span>IsSpaceToDepthSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSpaceToDepthSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7ce5f7168bf0d1e7efe269d59ed564ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7ce5f7168bf0d1e7efe269d59ed564ba">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSplitterSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_layer_support_8cpp_source.xhtml#l00623">IsSplitterSupported()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6487e532e0cb72a210096185e31e2bd6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6487e532e0cb72a210096185e31e2bd6">&#9670;&nbsp;</a></span>IsSplitterSupported() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSplitterSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>outputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a10e8442be2b8596afd5770e98b904caa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10e8442be2b8596afd5770e98b904caa">&#9670;&nbsp;</a></span>IsStackSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsStackSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aebe3dc6730e1b29aee9c9f33b8f94121"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aebe3dc6730e1b29aee9c9f33b8f94121">&#9670;&nbsp;</a></span>IsStridedSliceSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsStridedSliceSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afbf752a51fa513e0a54e343be130d962"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afbf752a51fa513e0a54e343be130d962">&#9670;&nbsp;</a></span>IsSubtractionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSubtractionSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af6dbe371ec651a8e0063624fdf32afc0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6dbe371ec651a8e0063624fdf32afc0">&#9670;&nbsp;</a></span>IsSupportedForDataTypeGeneric()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsSupportedForDataTypeGeneric </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Float16Func&#160;</td>
+ <td class="paramname"><em>float16FuncPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Float32Func&#160;</td>
+ <td class="paramname"><em>float32FuncPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Uint8Func&#160;</td>
+ <td class="paramname"><em>uint8FuncPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Int32Func&#160;</td>
+ <td class="paramname"><em>int32FuncPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">BooleanFunc&#160;</td>
+ <td class="paramname"><em>booleanFuncPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a85fcfea412723413a05f0743c84053aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85fcfea412723413a05f0743c84053aa">&#9670;&nbsp;</a></span>IsSwitchSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool IsSwitchSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">References <a class="el" href="_layer_support_8cpp_source.xhtml#l00038">FORWARD_LAYER_SUPPORT_FUNC</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac6cc8e0bd35d229486fe6d844d88e0d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac6cc8e0bd35d229486fe6d844d88e0d4">&#9670;&nbsp;</a></span>IsTransposeConvolution2dSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::IsTransposeConvolution2dSupported </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em> = <code>nullptr</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupportedMaxLength</em> = <code>1024</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac4fb1513cf6f4f3f40ab3d6559ec4067"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4fb1513cf6f4f3f40ab3d6559ec4067">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[1/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"> = <code>nullptr</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afb1e69829289fb07cc349c0884f27abd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb1e69829289fb07cc349c0884f27abd">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[2/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_activation_layer.xhtml">ActivationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="acc630e11a5baa28ad5723568a7a60109"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc630e11a5baa28ad5723568a7a60109">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[3/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_addition_layer.xhtml">AdditionLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a324e860c347972fce7a1c07531bed06e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a324e860c347972fce7a1c07531bed06e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[4/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_arg_min_max_layer.xhtml">ArgMinMaxLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ae22db3ab5196edbb2e4e5244adc512e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae22db3ab5196edbb2e4e5244adc512e3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[5/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_normalization_layer.xhtml">BatchNormalizationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a87ffe3fb58ec36989d343e53e23fb0f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87ffe3fb58ec36989d343e53e23fb0f8">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[6/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_batch_to_space_nd_layer.xhtml">BatchToSpaceNdLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a43b8024cb70c07116be132ca28b12a21"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43b8024cb70c07116be132ca28b12a21">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[7/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_comparison_layer.xhtml">ComparisonLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a300c356944bb1e9d2dff6191d1c3501c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a300c356944bb1e9d2dff6191d1c3501c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[8/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_concat_layer.xhtml">ConcatLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a307007c2249288fe158bfdfaf9e1c413"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a307007c2249288fe158bfdfaf9e1c413">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[9/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_constant_layer.xhtml">ConstantLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a4471d39d8390fc550c1f8688639e66f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4471d39d8390fc550c1f8688639e66f5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[10/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp16_to_fp32_layer.xhtml">ConvertFp16ToFp32Layer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="af8df06bed5f1257864645e45948afa5c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af8df06bed5f1257864645e45948afa5c">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[11/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_convert_fp32_to_fp16_layer.xhtml">ConvertFp32ToFp16Layer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab2f52d0c728933e36f581a07676d9fe9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab2f52d0c728933e36f581a07676d9fe9">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[12/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_convolution2d_layer.xhtml">Convolution2dLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad596268fcd03c87a4b6fde86f4732546"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad596268fcd03c87a4b6fde86f4732546">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[13/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_debug_layer.xhtml">DebugLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a939154289f544a02baec0735b27b8894"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a939154289f544a02baec0735b27b8894">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[14/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_depth_to_space_layer.xhtml">DepthToSpaceLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a26a46c27bca08b5bd26abba341f1d795"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a26a46c27bca08b5bd26abba341f1d795">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[15/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_depthwise_convolution2d_layer.xhtml">DepthwiseConvolution2dLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a95e2d190d7483017b4f4841dd07776e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a95e2d190d7483017b4f4841dd07776e5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[16/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_dequantize_layer.xhtml">DequantizeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a22772d461066f995cd72d13066b0f46d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a22772d461066f995cd72d13066b0f46d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[17/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_detection_post_process_layer.xhtml">DetectionPostProcessLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a955b1001b8c57c60ce443a1e31468f20"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a955b1001b8c57c60ce443a1e31468f20">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[18/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_division_layer.xhtml">DivisionLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a72f7601d11f32c8d9ccb49a80fcf662a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a72f7601d11f32c8d9ccb49a80fcf662a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[19/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_elementwise_unary_layer.xhtml">ElementwiseUnaryLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a4acae0cdcdfab8e941af5c4e42e58cb3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4acae0cdcdfab8e941af5c4e42e58cb3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[20/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_fake_quantization_layer.xhtml">FakeQuantizationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a575f5487e62465b6b9edbc447a26f32f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a575f5487e62465b6b9edbc447a26f32f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[21/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_floor_layer.xhtml">FloorLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aa689e4a3aa77e9d9e5851f566c5eb8b3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa689e4a3aa77e9d9e5851f566c5eb8b3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[22/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_fully_connected_layer.xhtml">FullyConnectedLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a548fb17a9bff172e751ae4bd3add62b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a548fb17a9bff172e751ae4bd3add62b5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[23/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_gather_layer.xhtml">GatherLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="adef1c8c63daa9d348a29e74eac33a054"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adef1c8c63daa9d348a29e74eac33a054">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[24/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_input_layer.xhtml">InputLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a57bcf309be7adcc91001834979f87bde"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a57bcf309be7adcc91001834979f87bde">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[25/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_instance_normalization_layer.xhtml">InstanceNormalizationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a36f16b97bcb662caaa4eae24ea16cccf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36f16b97bcb662caaa4eae24ea16cccf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[26/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_l2_normalization_layer.xhtml">L2NormalizationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="afb6f9bd4f43118749a0336074bed7b35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb6f9bd4f43118749a0336074bed7b35">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[27/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_log_softmax_layer.xhtml">LogSoftmaxLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a0d08fb555c6d1cba705fd73b71797a28"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d08fb555c6d1cba705fd73b71797a28">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[28/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_lstm_layer.xhtml">LstmLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6b231c8a547d4030d9a4a1618810c20b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b231c8a547d4030d9a4a1618810c20b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[29/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_maximum_layer.xhtml">MaximumLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="af079ba32db74f53aba1ad19193cd2a4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af079ba32db74f53aba1ad19193cd2a4b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[30/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_mean_layer.xhtml">MeanLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aa17969606f64ea581c28431f2395e653"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa17969606f64ea581c28431f2395e653">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[31/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_copy_layer.xhtml">MemCopyLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a70f3d83f6d1e3918eab895c8083058fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a70f3d83f6d1e3918eab895c8083058fa">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[32/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_mem_import_layer.xhtml">MemImportLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9e8199bdc39f928f694591a41d7aa0c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9e8199bdc39f928f694591a41d7aa0c0">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[33/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_merge_layer.xhtml">MergeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad32a13408ace1c1fa520ed64a2cbe70f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad32a13408ace1c1fa520ed64a2cbe70f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[34/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_minimum_layer.xhtml">MinimumLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a40f1546c0fa69f318eeab4b29cc64b70"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a40f1546c0fa69f318eeab4b29cc64b70">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[35/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_multiplication_layer.xhtml">MultiplicationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a140713619ee498a149854a5376b8d072"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a140713619ee498a149854a5376b8d072">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[36/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_normalization_layer.xhtml">NormalizationLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a7a6e68f66d1d3819640b0f2d46a55fd1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a6e68f66d1d3819640b0f2d46a55fd1">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[37/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_output_layer.xhtml">OutputLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab6f1994db909dcc399cb1f8bc50c2d3d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab6f1994db909dcc399cb1f8bc50c2d3d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[38/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_pad_layer.xhtml">PadLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a1e6b17606926b8f69dbeda7f7ff1df95"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e6b17606926b8f69dbeda7f7ff1df95">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[39/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_permute_layer.xhtml">PermuteLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ade84059b48b38da3a233bed287864c5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ade84059b48b38da3a233bed287864c5b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[40/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_pooling2d_layer.xhtml">Pooling2dLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6e5eaa19ff232f11daa9a1c6caccf7fe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e5eaa19ff232f11daa9a1c6caccf7fe">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[41/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_pre_compiled_layer.xhtml">PreCompiledLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a58a5defa35b12773a97760efadffef4f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58a5defa35b12773a97760efadffef4f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[42/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_prelu_layer.xhtml">PreluLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aaaaf64c0888ab25bfae770bd4c2ec34b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaaaf64c0888ab25bfae770bd4c2ec34b">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[43/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantize_layer.xhtml">QuantizeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a31bcd6f755df954a4d7b020a09499105"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31bcd6f755df954a4d7b020a09499105">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[44/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_quantized_lstm_layer.xhtml">QuantizedLstmLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6a17f58da2071720e3003a56a092aab3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6a17f58da2071720e3003a56a092aab3">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[45/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_reshape_layer.xhtml">ReshapeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="aafc370ea363f0565c3a8bced1e37c79e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aafc370ea363f0565c3a8bced1e37c79e">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[46/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_resize_layer.xhtml">ResizeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a3cbbb4e00618b072ace46751e660a295"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3cbbb4e00618b072ace46751e660a295">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[47/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_slice_layer.xhtml">SliceLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="af6af4b51e08d3e811620811ab5e0cd2d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6af4b51e08d3e811620811ab5e0cd2d">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[48/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_softmax_layer.xhtml">SoftmaxLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ac2d31ced5505a9d05287f5b71d25e34a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac2d31ced5505a9d05287f5b71d25e34a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[49/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_batch_nd_layer.xhtml">SpaceToBatchNdLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a81c31de4f532a95ab85ed6d999029332"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81c31de4f532a95ab85ed6d999029332">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[50/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_space_to_depth_layer.xhtml">SpaceToDepthLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a24d3abbfc1ed81df673452c7148aa0cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a24d3abbfc1ed81df673452c7148aa0cc">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[51/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_splitter_layer.xhtml">SplitterLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ab676aab9119d1417764849099a099ecf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab676aab9119d1417764849099a099ecf">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[52/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_stack_layer.xhtml">StackLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a1b5ff142f1d4420a8d83d9bcff1bfff4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b5ff142f1d4420a8d83d9bcff1bfff4">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[53/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_stand_in_layer.xhtml">StandInLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="ad640080ff4ea3e4f9ff05823e32ce15f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad640080ff4ea3e4f9ff05823e32ce15f">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[54/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_strided_slice_layer.xhtml">StridedSliceLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a9cc235c8c5e2ef3d2788cd558d676b0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9cc235c8c5e2ef3d2788cd558d676b0a">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[55/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_subtraction_layer.xhtml">SubtractionLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a110b9fdf7f17a1d065cd59ebc4bb76f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a110b9fdf7f17a1d065cd59ebc4bb76f7">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[56/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_switch_layer.xhtml">SwitchLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="af44c8ebb1b55f4c42cc301d0bf030aa5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af44c8ebb1b55f4c42cc301d0bf030aa5">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[57/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_layer.xhtml">TransposeLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a60af5a86cf0261d0bdf4312736ab4461"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60af5a86cf0261d0bdf4312736ab4461">&#9670;&nbsp;</a></span>LayerEnumOf() <span class="overload">[58/58]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#a56943a0946e5f15e5e58054b8e7a04a4">LayerType</a> armnn::LayerEnumOf </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_transpose_convolution2d_layer.xhtml">TransposeConvolution2dLayer</a> *&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a71f2cc06b097cb5c4f0a1f48130a823b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a71f2cc06b097cb5c4f0a1f48130a823b">&#9670;&nbsp;</a></span>LevelToString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string armnn::LevelToString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
+ <td class="paramname"><em>level</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_logging_8hpp_source.xhtml#l00056">ScopedRecord::ScopedRecord()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac52e04c0e349e25bcdaa72c27395ef8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac52e04c0e349e25bcdaa72c27395ef8f">&#9670;&nbsp;</a></span>LogSoftmax()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void LogSoftmax </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ac14705405cbcdd580df613de6766fe65">LogSoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01399">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a44affeeb090c3c6a3062830562672e84"><div class="ttname"><a href="namespacearmnn.xhtml#a44affeeb090c3c6a3062830562672e84">armnn::IgnoreUnused</a></div><div class="ttdeci">void IgnoreUnused(Ts &amp;&amp;...)</div><div class="ttdef"><b>Definition:</b> <a href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused.hpp:14</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a27ecdfeeea12de313f2b97d309a35d9d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a27ecdfeeea12de313f2b97d309a35d9d">&#9670;&nbsp;</a></span>LowerString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string armnn::LowerString </td>
+ <td>(</td>
+ <td class="paramtype">std::string&#160;</td>
+ <td class="paramname"><em>value</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a1545cb162c5a64d75d9c0c05e8ea387c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1545cb162c5a64d75d9c0c05e8ea387c">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="adb59a379c467b6d48874e946183b4d21"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb59a379c467b6d48874e946183b4d21">&#9670;&nbsp;</a></span>MakeDecoder() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a56867cc5245724ab56953604b1eec9ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56867cc5245724ab56953604b1eec9ee">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[1/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>data</em> = <code>nullptr</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
+<div class="ttc" id="_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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a363da7c8d642ea382e3bd2f1c6283d52"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a363da7c8d642ea382e3bd2f1c6283d52">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a34346ec9593088efe3a29c0dad92166d">armnn::DataType::QuantizedSymm8PerAxis</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::DataType::Signed32</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::DataType::QAsymmS8</a></div></div>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::DataType::QSymmS16</a></div></div>
+<div class="ttc" id="_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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a0a3f57c876f5a230244c38e1453a8a6e">armnn::DataType::QAsymmU8</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a26e6ed77470c6f2f830ecf874e6c0d55">armnn::DataType::Float16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6acdb56b2d2f73c26480207524f2dbe0af">armnn::DataType::BFloat16</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6fcd01a9cdee158d3022ad089c27c078"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fcd01a9cdee158d3022ad089c27c078">&#9670;&nbsp;</a></span>MakeEncoder() <span class="overload">[3/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>data</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae0ae21bef03ed19f252c72c660e571a4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae0ae21bef03ed19f252c72c660e571a4">&#9670;&nbsp;</a></span>MakeInfo()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::DetectionPostProcessLayerInfo armnn::MakeInfo </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_detection_post_process_workload_8cpp_source.xhtml#l00033">NeonDetectionPostProcessValidate()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aa7427025a851113a492de0b68b23d22a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7427025a851113a492de0b68b23d22a">&#9670;&nbsp;</a></span>MakeOptimizations()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_optimizer.xhtml#ad1794808004025d6e06c176507197b24">Optimizer::Optimizations</a> armnn::MakeOptimizations </td>
+ <td>(</td>
+ <td class="paramtype">Args &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>args</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_optimizer_8hpp_source.xhtml#l00030">Append()</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a77780137c47f528921f6537447060f05"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77780137c47f528921f6537447060f05">&#9670;&nbsp;</a></span>MakeOptional()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt;T&gt; armnn::MakeOptional </td>
+ <td>(</td>
+ <td class="paramtype">Args &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>args</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Utility template that constructs an object of type T in-place and wraps it inside an Optional&lt;T&gt; object. </p>
+
+<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>
+
+<p class="reference">References <a class="el" href="_optional_8hpp_source.xhtml#l00041">CONSTRUCT_IN_PLACE</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a165ae372a7f67cad64ef3395d30122ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a165ae372a7f67cad64ef3395d30122ce">&#9670;&nbsp;</a></span>Mean()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Mean </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>axis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01456">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a17955517b0d148f7ffdbffe8b46e41e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a17955517b0d148f7ffdbffe8b46e41e0">&#9670;&nbsp;</a></span>MockBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::MockBackendId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="afc773aec6f845adc0cc547ce475dfe3f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc773aec6f845adc0cc547ce475dfe3f">&#9670;&nbsp;</a></span>NeonAbsWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonAbsWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00354">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a46495807633a01d826851e1cb498f071"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a46495807633a01d826851e1cb498f071">&#9670;&nbsp;</a></span>NeonActivationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonActivationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_activation_descriptor.xhtml">ActivationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00129">NeonLayerSupport::IsActivationSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afc541536011ccfb06853c45bfaba2dfd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc541536011ccfb06853c45bfaba2dfd">&#9670;&nbsp;</a></span>NeonAdditionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonAdditionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00142">NeonLayerSupport::IsAdditionSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a61d1f39297fec6e3062e4047dc5f236e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a61d1f39297fec6e3062e4047dc5f236e">&#9670;&nbsp;</a></span>NeonArgMinMaxWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonArgMinMaxWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_arg_min_max_descriptor.xhtml">ArgMinMaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00154">NeonLayerSupport::IsArgMinMaxSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3a34a305e5187f3a3c67030d3bebbdb0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a34a305e5187f3a3c67030d3bebbdb0">&#9670;&nbsp;</a></span>NeonBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::NeonBackendId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_backend_8cpp_source.xhtml#l00029">NeonBackend::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a6c856ceba1828fe201b2b6c032d70371"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c856ceba1828fe201b2b6c032d70371">&#9670;&nbsp;</a></span>NeonBatchNormalizationValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonBatchNormalizationValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>mean</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>var</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>beta</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>gamma</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_normalization_descriptor.xhtml">BatchNormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00166">NeonLayerSupport::IsBatchNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a00623eeb8f77dac6dbbc1395b5270dbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00623eeb8f77dac6dbbc1395b5270dbb">&#9670;&nbsp;</a></span>NeonBatchToSpaceNdWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonBatchToSpaceNdWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_batch_to_space_nd_descriptor.xhtml">BatchToSpaceNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00186">NeonLayerSupport::IsBatchToSpaceNdSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8a219633e750d6daffcef3b641fa11f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a219633e750d6daffcef3b641fa11f3">&#9670;&nbsp;</a></span>NeonConcatWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonConcatWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00216">NeonLayerSupport::IsConcatSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af64bb043263ba7d09c98fd88da60726d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af64bb043263ba7d09c98fd88da60726d">&#9670;&nbsp;</a></span>NeonConvolution2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonConvolution2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_convolution2d_descriptor.xhtml">Convolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00284">NeonLayerSupport::IsConvolution2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a116d88067bf98ce9858ab73e68f605f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a116d88067bf98ce9858ab73e68f605f9">&#9670;&nbsp;</a></span>NeonDepthToSpaceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonDepthToSpaceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a3647f60510bc8ddaced01c51b0ee8714">DepthToSpaceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00300">NeonLayerSupport::IsDepthToSpaceSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a168ebb908e1ee4bac24cb7992510de73"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a168ebb908e1ee4bac24cb7992510de73">&#9670;&nbsp;</a></span>NeonDepthwiseConvolutionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonDepthwiseConvolutionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_depthwise_convolution2d_descriptor.xhtml">DepthwiseConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="acefede7cc57c71ea4cfe1c888bb413e0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acefede7cc57c71ea4cfe1c888bb413e0">&#9670;&nbsp;</a></span>NeonDequantizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonDequantizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00328">NeonLayerSupport::IsDequantizeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a304243ccb52986da06388dc57deae88f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a304243ccb52986da06388dc57deae88f">&#9670;&nbsp;</a></span>NeonDetectionPostProcessValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonDetectionPostProcessValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>boxEncodings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>scores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>anchors</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionBoxes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionClasses</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>detectionScores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>numDetections</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_detection_post_process_descriptor.xhtml">DetectionPostProcessDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3a62359fc5ebfe9628871c0ba79fb37c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3a62359fc5ebfe9628871c0ba79fb37c">&#9670;&nbsp;</a></span>NeonDivisionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonDivisionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00523">NeonLayerSupport::IsDivisionSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a0b7897a2a04016aa7fa24e2a1d10e944"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b7897a2a04016aa7fa24e2a1d10e944">&#9670;&nbsp;</a></span>NeonFullyConnectedWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonFullyConnectedWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>biases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_fully_connected_descriptor.xhtml">FullyConnectedDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00392">NeonLayerSupport::IsFullyConnectedSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad536149438b0481b7278ad741e18fb5a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad536149438b0481b7278ad741e18fb5a">&#9670;&nbsp;</a></span>NeonGreaterWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonGreaterWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00198">NeonLayerSupport::IsComparisonSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aea722abe239545030f4c6fe4e083816f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea722abe239545030f4c6fe4e083816f">&#9670;&nbsp;</a></span>NeonInstanceNormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonInstanceNormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_instance_normalization_descriptor.xhtml">InstanceNormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00423">NeonLayerSupport::IsInstanceNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ae838df3960d2b5d18d73ed2a07aee917"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae838df3960d2b5d18d73ed2a07aee917">&#9670;&nbsp;</a></span>NeonL2NormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonL2NormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_l2_normalization_descriptor.xhtml">L2NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00435">NeonLayerSupport::IsL2NormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a9e06cc2a2ac8b88fc72972695a17910f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9e06cc2a2ac8b88fc72972695a17910f">&#9670;&nbsp;</a></span>NeonLstmFloatWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonLstmFloatWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>scratchBuffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_descriptor.xhtml">LstmDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_lstm_input_params_info.xhtml">LstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00443">NeonLayerSupport::IsLstmSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8d2ea79addd8ef64be2ca0dad3408f00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d2ea79addd8ef64be2ca0dad3408f00">&#9670;&nbsp;</a></span>NeonMaximumWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonMaximumWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00467">NeonLayerSupport::IsMaximumSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ab81dd6d40850f8fea025ee7ce51f86d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab81dd6d40850f8fea025ee7ce51f86d0">&#9670;&nbsp;</a></span>NeonMeanWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonMeanWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_mean_descriptor.xhtml">MeanDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>desc</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00479">NeonLayerSupport::IsMeanSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab81159ebfa638af1b91fe1e8c5de1955"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab81159ebfa638af1b91fe1e8c5de1955">&#9670;&nbsp;</a></span>NeonMinimumWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonMinimumWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Validate function for validating the inputs and output. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">input0</td><td>The input0 value to be validated. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">input1</td><td>The input1 value to be validated. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">output</td><td>The output value to be validated. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00499">NeonLayerSupport::IsMinimumSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a38bdbed2a1e28ab15cac0cc0f42c3fa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38bdbed2a1e28ab15cac0cc0f42c3fa6">&#9670;&nbsp;</a></span>NeonMultiplicationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonMultiplicationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00511">NeonLayerSupport::IsMultiplicationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a2ec6297db90d1d4c258c13d2d72b13d9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2ec6297db90d1d4c258c13d2d72b13d9">&#9670;&nbsp;</a></span>NeonNormalizationWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonNormalizationWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_normalization_descriptor.xhtml">NormalizationDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00535">NeonLayerSupport::IsNormalizationSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a39209c0c078e83227222eb885317c2c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39209c0c078e83227222eb885317c2c5">&#9670;&nbsp;</a></span>NeonPadWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonPadWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pad_descriptor.xhtml">PadDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00553">NeonLayerSupport::IsPadSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a70650f6b1d3b8511fcdb989ca769cdbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a70650f6b1d3b8511fcdb989ca769cdbb">&#9670;&nbsp;</a></span>NeonPermuteWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonPermuteWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_permute_descriptor.xhtml">PermuteDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00565">NeonLayerSupport::IsPermuteSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a1f07655db8ad7f2738bb0d3d9e2316cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1f07655db8ad7f2738bb0d3d9e2316cc">&#9670;&nbsp;</a></span>NeonPooling2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonPooling2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00573">NeonLayerSupport::IsPooling2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a188adc104b16db3dc23ed2c5ff06cbb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a188adc104b16db3dc23ed2c5ff06cbb8">&#9670;&nbsp;</a></span>NeonPreluWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonPreluWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>alpha</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00581">NeonLayerSupport::IsPreluSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ae83632e641892ad2de78f316376f6bd0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae83632e641892ad2de78f316376f6bd0">&#9670;&nbsp;</a></span>NeonQuantizedLstmWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonQuantizedLstmWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateIn</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>cellStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputStateOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_quantized_lstm_input_params_info.xhtml">QuantizedLstmInputParamsInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>paramsInfo</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00599">NeonLayerSupport::IsQuantizedLstmSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a4d1e35c8bbe48e99dd522ac0f75f77d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4d1e35c8bbe48e99dd522ac0f75f77d7">&#9670;&nbsp;</a></span>NeonQuantizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonQuantizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00589">NeonLayerSupport::IsQuantizeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a430021076042c8157a926a3bb3a37152"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a430021076042c8157a926a3bb3a37152">&#9670;&nbsp;</a></span>NeonReshapeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonReshapeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00617">NeonLayerSupport::IsReshapeSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a552d65f4e0a6c9e7c7796e77590063e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a552d65f4e0a6c9e7c7796e77590063e9">&#9670;&nbsp;</a></span>NeonResizeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonResizeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_resize_descriptor.xhtml">ResizeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00629">NeonLayerSupport::IsResizeSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa7d1b5e38aa8cb731519ff12e2a73350"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7d1b5e38aa8cb731519ff12e2a73350">&#9670;&nbsp;</a></span>NeonRsqrtWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonRsqrtWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00354">NeonLayerSupport::IsElementwiseUnarySupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a0a223c0997e3f7faa373ed55f954252b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0a223c0997e3f7faa373ed55f954252b">&#9670;&nbsp;</a></span>NeonSliceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSliceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00664">NeonLayerSupport::IsSliceSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4077a9771ba9c551f4ce61863f65e798"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4077a9771ba9c551f4ce61863f65e798">&#9670;&nbsp;</a></span>NeonSoftmaxWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSoftmaxWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_softmax_descriptor.xhtml">SoftmaxDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00676">NeonLayerSupport::IsSoftmaxSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ab29257da888af2c4971db1344d8a526c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab29257da888af2c4971db1344d8a526c">&#9670;&nbsp;</a></span>NeonSpaceToBatchNdWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSpaceToBatchNdWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00684">NeonLayerSupport::IsSpaceToBatchNdSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="af6d2d40482240def4614deb694933d1e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6d2d40482240def4614deb694933d1e">&#9670;&nbsp;</a></span>NeonSpaceToDepthWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSpaceToDepthWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8hpp_source.xhtml#l00830">SpaceToDepthDescriptor::m_DataLayout</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00696">NeonLayerSupport::IsSpaceToDepthSupported()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aab5ea316b3decb05430323d847e3a773"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aab5ea316b3decb05430323d847e3a773">&#9670;&nbsp;</a></span>NeonSplitterWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSplitterWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>outputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>splitAxis</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00719">NeonLayerSupport::IsSplitterSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a65c83c74bdbd66cdd547d331998952eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65c83c74bdbd66cdd547d331998952eb">&#9670;&nbsp;</a></span>NeonStackWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonStackWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> *&gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_descriptor.xhtml">StackDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00752">NeonLayerSupport::IsStackSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac71d08bf1257807c112b4d019802acc3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac71d08bf1257807c112b4d019802acc3">&#9670;&nbsp;</a></span>NeonStridedSliceWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonStridedSliceWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00764">NeonLayerSupport::IsStridedSliceSupported()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a73c15f02c46f64c1adf0fafb4c7c2cac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a73c15f02c46f64c1adf0fafb4c7c2cac">&#9670;&nbsp;</a></span>NeonSubtractionWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonSubtractionWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00776">NeonLayerSupport::IsSubtractionSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="aad5d4888304a57fb22c4608dc5d94dc1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aad5d4888304a57fb22c4608dc5d94dc1">&#9670;&nbsp;</a></span>NeonTensorHandleFactoryId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::NeonTensorHandleFactoryId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_tensor_handle_factory_8cpp_source.xhtml#l00084">NeonTensorHandleFactory::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="abc73c3c9a09f91c22c64d7c166e9be4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc73c3c9a09f91c22c64d7c166e9be4d">&#9670;&nbsp;</a></span>NeonTransposeConvolution2dWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonTransposeConvolution2dWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>biases</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00788">NeonLayerSupport::IsTransposeConvolution2dSupported()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a2b8555526752015115fa7fa00d88542b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b8555526752015115fa7fa00d88542b">&#9670;&nbsp;</a></span>NeonTransposeWorkloadValidate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">arm_compute::Status NeonTransposeWorkloadValidate </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>input</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>output</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_descriptor.xhtml">TransposeDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_layer_support_8cpp_source.xhtml#l00804">NeonLayerSupport::IsTransposeSupported()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a869f740e9c2fcb8642350c6e3d0b3742"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a869f740e9c2fcb8642350c6e3d0b3742">&#9670;&nbsp;</a></span>NextIndex()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::NextIndex </td>
+ <td>(</td>
+ <td class="paramtype">const unsigned int&#160;</td>
+ <td class="paramname"><em>numDims</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>dims</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>current</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ac8c641d4a69c9a85c487cfbc7ea4d73c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac8c641d4a69c9a85c487cfbc7ea4d73c">&#9670;&nbsp;</a></span>NonMaxSuppression()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt; unsigned int &gt; NonMaxSuppression </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>numBoxes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>boxCorners</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>scores</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>nmsScoreThreshold</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>maxDetection</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>nmsIouThreshold</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a37fa39012e90d568df7f774cd6d1e956"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37fa39012e90d568df7f774cd6d1e956">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[1/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">Source&#160;</td>
+ <td class="paramname"><em>source</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad6ffcdfab3ded108070933bf4cee52a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6ffcdfab3ded108070933bf4cee52a0">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[2/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">Source&#160;</td>
+ <td class="paramname"><em>source</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae3db25ec960ff865f0ed144dc018e61e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3db25ec960ff865f0ed144dc018e61e">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[3/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">Source&#160;</td>
+ <td class="paramname"><em>sValue</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a0071d5c83ebd2132118af70b1f3a539a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0071d5c83ebd2132118af70b1f3a539a">&#9670;&nbsp;</a></span>numeric_cast() <span class="overload">[4/4]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">Source&#160;</td>
+ <td class="paramname"><em>sValue</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_numeric_cast_8hpp_source.xhtml#l00025">ARMNN_NUMERIC_CAST_CHECK</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac70a495c61526a0500b33b23db86ca27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac70a495c61526a0500b33b23db86ca27">&#9670;&nbsp;</a></span>Offset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int armnn::Offset </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>batch</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>channels</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a> &amp;&#160;</td>
+ <td class="paramname"><em>dataLayout</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5b0313cb554380d6e4dfb24c31f9e605"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5b0313cb554380d6e4dfb24c31f9e605">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[1/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>compute</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Deprecated function that will be removed together with the Compute enum. </p>
+
+<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>
+
+<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a127a59fdf5e6d2fa74f87f9265de958b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a127a59fdf5e6d2fa74f87f9265de958b">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[2/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::set&lt; <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>compute</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Deprecated function that will be removed together with the Compute enum. </p>
+
+<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>
+
+<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a14de37f4c695ac066f999aa75b7cb136"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a14de37f4c695ac066f999aa75b7cb136">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[3/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_version.xhtml">BackendVersion</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendVersion</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a345acf4e0dc087eee3f9688029ee6328"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a345acf4e0dc087eee3f9688029ee6328">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[4/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">Compute</a> &amp;&#160;</td>
+ <td class="paramname"><em>compute</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Deprecated function that will be removed together with the Compute enum. </p>
+
+<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>
+
+<p class="reference">References <a class="el" href="_backend_id_8hpp_source.xhtml#l00034">GetComputeDeviceAsCString()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa1166f0056ce60553e825ae3cee4d5f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa1166f0056ce60553e825ae3cee4d5f7">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[5/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> &amp;&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="afc46634e26857d037ee80bb5a74ef28a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afc46634e26857d037ee80bb5a74ef28a">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[6/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a62a9e8c87b9b9f504726746ba4a000a6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a62a9e8c87b9b9f504726746ba4a000a6">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[7/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>ids</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="aaa5b68f3f5bb73b1d3c85d895547a372"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa5b68f3f5bb73b1d3c85d895547a372">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[8/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a67a0db04d321a74b7e7fcfd3f1a3f70b">Status</a>&#160;</td>
+ <td class="paramname"><em>stat</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_types_utils_8hpp_source.xhtml#l00017">GetStatusAsCString()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa6d7532e14af97577c054f96d0cf23b3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6d7532e14af97577c054f96d0cf23b3">&#9670;&nbsp;</a></span>operator<<() <span class="overload">[9/9]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::ostream&amp; armnn::operator&lt;&lt; </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream &amp;&#160;</td>
+ <td class="paramname"><em>os</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>shape</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a8022a6869bffa6233fec784a471c1680"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8022a6869bffa6233fec784a471c1680">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> &amp;&#160;</td>
+ <td class="paramname"><em>compute</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3c51506c471a4513dcc3364514d75f39"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c51506c471a4513dcc3364514d75f39">&#9670;&nbsp;</a></span>operator>>() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::istream&amp; armnn::operator&gt;&gt; </td>
+ <td>(</td>
+ <td class="paramtype">std::istream &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">armnn::BackendId</a> &amp;&#160;</td>
+ <td class="paramname"><em>backend</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a82e98ef05fd67036d1195ba17174d685"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a82e98ef05fd67036d1195ba17174d685">&#9670;&nbsp;</a></span>Optimize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a674efcf6cbdb9e831d653ff0e821fb38">IOptimizedNetworkPtr</a> Optimize </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> &amp;&#160;</td>
+ <td class="paramname"><em>network</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>backendPreferences</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_device_spec.xhtml">IDeviceSpec</a> &amp;&#160;</td>
+ <td class="paramname"><em>deviceSpec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a> &amp;&#160;</td>
+ <td class="paramname"><em>options</em> = <code><a class="el" href="structarmnn_1_1_optimizer_options.xhtml">OptimizerOptions</a>()</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>messages</em> = <code><a class="el" href="structarmnn_1_1_empty_optional.xhtml">EmptyOptional</a>()</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Create an optimized version of the network. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <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>
+ <tr><td class="paramname">backendPreferences</td><td>The choice of the backend ordered by user preferences. </td></tr>
+ <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>
+ <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>
+ <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>
+ </table>
+ </dd>
+</dl>
+<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>
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a28e115f5d28500324b53fae9e6c00b77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28e115f5d28500324b53fae9e6c00b77">&#9670;&nbsp;</a></span>Pad()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Pad </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_padList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">T *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a37fe5e5b5f650430dc0e71d69977bebd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a37fe5e5b5f650430dc0e71d69977bebd">&#9670;&nbsp;</a></span>Pad< BFloat16 >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_PadList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_b_float16.xhtml">BFloat16</a> *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
+
+</div>
+</div>
+<a id="a09fc687543b371ddab280203dc989bd9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09fc687543b371ddab280203dc989bd9">&#9670;&nbsp;</a></span>Pad< float >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; float &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_PadList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
+
+</div>
+</div>
+<a id="a1b165f49b29968defb57e2d9b8628b9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b165f49b29968defb57e2d9b8628b9f">&#9670;&nbsp;</a></span>Pad< Half >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <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>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_PadList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a0f38fa92b2468d5378258a2b074c1a31">Half</a> *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
+
+</div>
+</div>
+<a id="a68b05cecb5ebbbc3b8d1fd94a66df4af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a68b05cecb5ebbbc3b8d1fd94a66df4af">&#9670;&nbsp;</a></span>Pad< int16_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; int16_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_PadList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int16_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int16_t *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
+
+</div>
+</div>
+<a id="a7e27cbebab8cde65c84d7a00efa025cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7e27cbebab8cde65c84d7a00efa025cd">&#9670;&nbsp;</a></span>Pad< uint8_t >()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="namespacearmnn.xhtml#a28e115f5d28500324b53fae9e6c00b77">armnn::Pad</a>&lt; uint8_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; std::pair&lt; unsigned int, unsigned int &gt;&gt;&#160;</td>
+ <td class="paramname"><em>m_PadList</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const uint8_t *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t *&#160;</td>
+ <td class="paramname"><em>outData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float&#160;</td>
+ <td class="paramname"><em>padValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_pad_8cpp_source.xhtml#l00022">Pad()</a>.</p>
+
+</div>
+</div>
+<a id="af464d406b22309a891ed0aa3008a7953"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af464d406b22309a891ed0aa3008a7953">&#9670;&nbsp;</a></span>ParseBoolean()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::ParseBoolean </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>defaultValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a65645fa03bf8cddfb9d8a9f83beeb6e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65645fa03bf8cddfb9d8a9f83beeb6e8">&#9670;&nbsp;</a></span>ParseComputeDevice()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr <a class="el" href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456ae">armnn::Compute</a> armnn::ParseComputeDevice </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>str</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Deprecated function that will be removed together with the Compute enum. </p>
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_inference_test_8hpp_source.xhtml#l00020">operator&gt;&gt;()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeaec0fc0100c4fc1ce4eea230c3dc10360">armnn::Compute::Undefined</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aeafaa4524e3df19ada32643ce9a222362b">armnn::Compute::GpuAcc</a></div><div class="ttdoc">GPU Execution: OpenCL: ArmCompute. </div></div>
+<div class="ttc" id="namespacearmnn_xhtml_ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1"><div class="ttname"><a href="namespacearmnn.xhtml#ae2f04a162585c0a5222a537efd5456aea39f8662ca778258e9c6a14f26fec5ec1">armnn::Compute::CpuAcc</a></div><div class="ttdoc">CPU Execution: NEON: ArmCompute. </div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4e9a59f936f3d2050a17597d22825f53"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4e9a59f936f3d2050a17597d22825f53">&#9670;&nbsp;</a></span>ParseFile()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::string armnn::ParseFile </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::string&#160;</td>
+ <td class="paramname"><em>defaultValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="af457790132251cde6545072d879c7684"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af457790132251cde6545072d879c7684">&#9670;&nbsp;</a></span>ParseOptions()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ParseOptions </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; <a class="el" href="structarmnn_1_1_backend_options.xhtml">BackendOptions</a> &gt; &amp;&#160;</td>
+ <td class="paramname"><em>options</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_backend_id.xhtml">BackendId</a>&#160;</td>
+ <td class="paramname"><em>backend</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">F&#160;</td>
+ <td class="paramname"><em>f</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a3ca05ac77af0a0444ff34c1319094f6d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ca05ac77af0a0444ff34c1319094f6d">&#9670;&nbsp;</a></span>ParseTuningLevel()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a> armnn::ParseTuningLevel </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_backend_options_1_1_var.xhtml">BackendOptions::Var</a> &amp;&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a707090747256af276c389e0cf1cb0a9a">TuningLevel</a>&#160;</td>
+ <td class="paramname"><em>defaultValue</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_backend_context_8cpp_source.xhtml#l00153">ClBackendContext::ClBackendContext()</a>.</p>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2a9ac8ebb69307ad4ec894ffa0523dbf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2a9ac8ebb69307ad4ec894ffa0523dbf">&#9670;&nbsp;</a></span>PermuteTensor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">armnn::ConstTensor</a> PermuteTensor </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_cpu_tensor_handle.xhtml">ConstCpuTensorHandle</a> *&#160;</td>
+ <td class="paramname"><em>tensor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_permutation_vector.xhtml">PermutationVector</a> &amp;&#160;</td>
+ <td class="paramname"><em>permutationVector</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>permuteBuffer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_utils_xhtml_abeaf4f6785039866fd075f4569ba8e84"><div class="ttname"><a href="namespacearmnn_utils.xhtml#abeaf4f6785039866fd075f4569ba8e84">armnnUtils::Permuted</a></div><div class="ttdeci">armnn::TensorShape Permuted(const armnn::TensorShape &amp;srcShape, const armnn::PermutationVector &amp;mappings)</div><div class="ttdef"><b>Definition:</b> <a href="_permute_8cpp_source.xhtml#l00098">Permute.cpp:98</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a28f9c43e98211c77e579a14fb465bc77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28f9c43e98211c77e579a14fb465bc77">&#9670;&nbsp;</a></span>polymorphic_downcast()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DestType armnn::polymorphic_downcast </td>
+ <td>(</td>
+ <td class="paramtype">SourceType&#160;</td>
+ <td class="paramname"><em>value</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_polymorphic_downcast_8hpp_source.xhtml#l00026">ARMNN_POLYMORPHIC_CAST_CHECK</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae2e93e304cf516841c521e3eaee025cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae2e93e304cf516841c521e3eaee025cd">&#9670;&nbsp;</a></span>Pooling2d()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Pooling2d </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rInputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>rOutputEncoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_pooling2d_descriptor.xhtml">Pooling2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Computes the Pooling2d operation. </p>
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="structarmnn_1_1_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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa1ca65b3ba7f7c760eb3d5563c12864e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa1ca65b3ba7f7c760eb3d5563c12864e">&#9670;&nbsp;</a></span>PreluImpl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PreluImpl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_prelu_queue_descriptor.xhtml">PreluQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>alphaData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputData</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_prelu_workload_8cpp_source.xhtml#l00021">RefPreluWorkload::Execute()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abe34cf42d7c8515ecd15d11f4aeb399c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abe34cf42d7c8515ecd15d11f4aeb399c">&#9670;&nbsp;</a></span>PreserveTypeTestImpl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::PreserveTypeTestImpl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">DataType</a> &amp;&#160;</td>
+ <td class="paramname"><em>dataType</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02956">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="abbbe4a59b72fba606f21e7c24dcbd8c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abbbe4a59b72fba606f21e7c24dcbd8c0">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::Quantize </td>
+ <td>(</td>
+ <td class="paramtype">uint8_t *&#160;</td>
+ <td class="paramname"><em>quant</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>dequant</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ad773a034fb9983e15f3094b4c5c7c30c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad773a034fb9983e15f3094b4c5c7c30c">&#9670;&nbsp;</a></span>Quantize() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">template int32_t Quantize&lt; int32_t &gt; </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>value</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>scale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int32_t&#160;</td>
+ <td class="paramname"><em>offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Quantize a floating point data type into an 8-bit data type. </p>
+<p>Explicit specialization of Quantize for int32_t.</p>
+<p>Explicit specialization of Quantize for int16_t.</p>
+<p>Explicit specialization of Quantize for uint8_t.</p>
+<p>Explicit specialization of Quantize for int8_t.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">value</td><td>- The value to quantize. </td></tr>
+ <tr><td class="paramname">scale</td><td>- The scale (must be non-zero). </td></tr>
+ <tr><td class="paramname">offset</td><td>- The offset. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>- The quantized value calculated as round(value/scale)+offset. </dd></dl>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l01950">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a0e2bce68a1f7eff47ead4d9a2804eb91"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e2bce68a1f7eff47ead4d9a2804eb91">&#9670;&nbsp;</a></span>QuantizeConstant()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::QuantizeConstant </td>
+ <td>(</td>
+ <td class="paramtype">const srcType *&#160;</td>
+ <td class="paramname"><em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint8_t *&#160;</td>
+ <td class="paramname"><em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t&#160;</td>
+ <td class="paramname"><em>numElements</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float &amp;&#160;</td>
+ <td class="paramname"><em>scale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>offset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_quantizer_utils_8cpp_source.xhtml#l00015">CreateQuantizedConst()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae86f1ca23eaa764da9e589cc8e39a969"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae86f1ca23eaa764da9e589cc8e39a969">&#9670;&nbsp;</a></span>ReducedOutputOffset()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int armnn::ReducedOutputOffset </td>
+ <td>(</td>
+ <td class="paramtype">const unsigned int&#160;</td>
+ <td class="paramname"><em>numDims</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>dims</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>index</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const unsigned int&#160;</td>
+ <td class="paramname"><em>numAxis</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>axis</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="backends_2reference_2workloads_2_mean_8cpp_source.xhtml#l00071">Mean()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="ae7d50846b2769f81521af24d063bc093"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae7d50846b2769f81521af24d063bc093">&#9670;&nbsp;</a></span>RefBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::RefBackendId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_backend_8cpp_source.xhtml#l00024">RefBackend::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a5baedac4819656984488bc1fe5fe1505"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5baedac4819656984488bc1fe5fe1505">&#9670;&nbsp;</a></span>RefTensorHandleFactoryId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::RefTensorHandleFactoryId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_tensor_handle_factory_8cpp_source.xhtml#l00016">RefTensorHandleFactory::GetIdStatic()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a52b301fd3adce20b51c4482cb52f1a38"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52b301fd3adce20b51c4482cb52f1a38">&#9670;&nbsp;</a></span>ReorderWeightChannelsForAcl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> armnn::ReorderWeightChannelsForAcl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_const_tensor.xhtml">ConstTensor</a> &amp;&#160;</td>
+ <td class="paramname"><em>weightHandle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>permuteBuffer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7658f93d899c8646515a29370e6aa994"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7658f93d899c8646515a29370e6aa994">&#9670;&nbsp;</a></span>ReportError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ReportError </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>errorMessage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errorMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a38e626422579decc13e3ee37da1a84c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a38e626422579decc13e3ee37da1a84c9">&#9670;&nbsp;</a></span>ReportWarning()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ReportWarning </td>
+ <td>(</td>
+ <td class="paramtype">const std::string &amp;&#160;</td>
+ <td class="paramname"><em>warningMessage</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>warningMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5ee4a1cca55f69b31e625c786655ed1a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5ee4a1cca55f69b31e625c786655ed1a">&#9670;&nbsp;</a></span>RequiresCopy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::RequiresCopy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
+ <td class="paramname"><em>src</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_tensor_handle_factory.xhtml#a32f4aa6a7089d877af08928139c2c277">ITensorHandleFactory::FactoryId</a>&#160;</td>
+ <td class="paramname"><em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_network_8cpp_source.xhtml#l00638">CalculateSlotOption()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a3170fdd696155a247ecd81d445c0e2e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3170fdd696155a247ecd81d445c0e2e1">&#9670;&nbsp;</a></span>ReshapeWeightsForAcl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ReshapeWeightsForAcl </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>weightInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad1d5cce2d9e9a5d61c243e5c989112e0">DataLayout</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a25dc224be48103343302b5a6fd588fe7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a25dc224be48103343302b5a6fd588fe7">&#9670;&nbsp;</a></span>Resize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Resize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_utils_1_1_data_layout_indexed.xhtml">DataLayoutIndexed</a>&#160;</td>
+ <td class="paramname"><em>dataLayout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4">armnn::ResizeMethod</a>&#160;</td>
+ <td class="paramname"><em>resizeMethod</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>alignCorners</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaf17c98bbd83c27d6426d2ff3fa81d7f">armnn::ResizeMethod::Bilinear</a></div></div>
+<div class="ttc" id="namespacearmnn_xhtml_a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f"><div class="ttname"><a href="namespacearmnn.xhtml#a9a2af2f8c4af4f9efa8e79417d505ac4aaa020331bb30d2fa2ecf7c3a0777823f">armnn::ResizeMethod::NearestNeighbor</a></div></div>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ae50fff9aa2a1ce46392d8641c10aa3bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae50fff9aa2a1ce46392d8641c10aa3bc">&#9670;&nbsp;</a></span>ReturnWithError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> armnn::ReturnWithError </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a>&#160;</td>
+ <td class="paramname"><em>res</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_layer.xhtml">Layer</a> *&#160;</td>
+ <td class="paramname"><em>layer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_backend_settings.xhtml">BackendSettings</a> &amp;&#160;</td>
+ <td class="paramname"><em>backendSettings</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aff5bee79757341daf750c7dd7c123a15"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aff5bee79757341daf750c7dd7c123a15">&#9670;&nbsp;</a></span>RunClFunction()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::RunClFunction </td>
+ <td>(</td>
+ <td class="paramtype">arm_compute::IFunction &amp;&#160;</td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;&#160;</td>
+ <td class="paramname"><em>location</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a01fa2d4db2c1b4ee5269a31e514f37ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a01fa2d4db2c1b4ee5269a31e514f37ec">&#9670;&nbsp;</a></span>RuntimeLoadedNetworksReserve()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void RuntimeLoadedNetworksReserve </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_runtime.xhtml">armnn::Runtime</a> *&#160;</td>
+ <td class="paramname"><em>runtime</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_output_shape_of_squeeze_8cpp.xhtml#ae3a6cb217a792718f2bd0e8f45e3ca9e">BOOST_AUTO_TEST_SUITE()</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_runtime_tests_8cpp_source.xhtml#l00037">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a40c8a268a9dc9dc910e348534d479f7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a40c8a268a9dc9dc910e348534d479f7a">&#9670;&nbsp;</a></span>SampleDynamicBackendId()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr const char* armnn::SampleDynamicBackendId </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="include_2armnn_2backends_2_optimization_views_8hpp_source.xhtml#l00044">OptimizationViews::AddUntouchedSubgraph()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a5d3468fb5880eb444cd25b55a86220ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5d3468fb5880eb444cd25b55a86220ff">&#9670;&nbsp;</a></span>SelectTensorHandleStrategy()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structarmnn_1_1_optimization_result.xhtml">OptimizationResult</a> SelectTensorHandleStrategy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_graph.xhtml">Graph</a> &amp;&#160;</td>
+ <td class="paramname"><em>optGraph</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a9173495a61a0092b5f38b855f02c3585">BackendsMap</a> &amp;&#160;</td>
+ <td class="paramname"><em>backends</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_tensor_handle_factory_registry.xhtml">TensorHandleFactoryRegistry</a> &amp;&#160;</td>
+ <td class="paramname"><em>registry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>errMessages</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a7f8325a4bc02f2f687ba1968b595ec0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7f8325a4bc02f2f687ba1968b595ec0a">&#9670;&nbsp;</a></span>SetAllLoggingSinks()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void SetAllLoggingSinks </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>standardOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>debugOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>coloured</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a460e01ad4cd0bfa6bde4eccaf0e77220"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a460e01ad4cd0bfa6bde4eccaf0e77220">&#9670;&nbsp;</a></span>SetClSliceData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">auto armnn::SetClSliceData </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_begin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_size</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_slice_workload_8cpp_source.xhtml#l00034">ClSliceWorkload::ClSliceWorkload()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6d4bdf4368a1422943f8f2b1740ec491"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6d4bdf4368a1422943f8f2b1740ec491">&#9670;&nbsp;</a></span>SetClStridedSliceData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">auto armnn::SetClStridedSliceData </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_begin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_end</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_stride</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_cl_strided_slice_workload_8cpp_source.xhtml#l00054">ClStridedSliceWorkload::ClStridedSliceWorkload()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac9aad76a34137b6359a867b282ea7cfb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac9aad76a34137b6359a867b282ea7cfb">&#9670;&nbsp;</a></span>SetLogFilter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void SetLogFilter </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3d">LogSeverity</a>&#160;</td>
+ <td class="paramname"><em>level</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5f523aee1752323aeaf899085649320b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f523aee1752323aeaf899085649320b">&#9670;&nbsp;</a></span>SetLoggingSinks()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::SetLoggingSinks </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>standardOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>debugOut</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>coloured</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="ab40e30cea5a328a3c35aa32f9b7db1c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab40e30cea5a328a3c35aa32f9b7db1c1">&#9670;&nbsp;</a></span>SetNeonSliceData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">auto armnn::SetNeonSliceData </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_begin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; unsigned int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_size</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_slice_workload_8cpp_source.xhtml#l00034">NeonSliceWorkload::NeonSliceWorkload()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a01d1e745f360ccd0b655214645bcef32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a01d1e745f360ccd0b655214645bcef32">&#9670;&nbsp;</a></span>SetNeonStridedSliceData()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">auto armnn::SetNeonStridedSliceData </td>
+ <td>(</td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_begin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_end</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>m_stride</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_neon_strided_slice_workload_8cpp_source.xhtml#l00047">NeonStridedSliceWorkload::NeonStridedSliceWorkload()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a52cbff9d344ba4a1fe01d4da2c1f7ba2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a52cbff9d344ba4a1fe01d4da2c1f7ba2">&#9670;&nbsp;</a></span>SetupQuantize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">std::vector&lt;uint8_t&gt; armnn::SetupQuantize </td>
+ <td>(</td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>value</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02851">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204"><div class="ttname"><a href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6a166495adc0d0f53bee6baecc577f5204">armnn::DataType::Float32</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a13c7d751e4d37f65a6d40c3c6e50d2b8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a13c7d751e4d37f65a6d40c3c6e50d2b8">&#9670;&nbsp;</a></span>SetValueChecked()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::SetValueChecked </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; T &amp;&gt;&#160;</td>
+ <td class="paramname"><em>optionalRef</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">V &amp;&amp;&#160;</td>
+ <td class="paramname"><em>val</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a044ea0cc993d4d1fbe4ec877b17b8d39"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a044ea0cc993d4d1fbe4ec877b17b8d39">&#9670;&nbsp;</a></span>Slice()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Slice </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_slice_descriptor.xhtml">SliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>outputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>dataTypeSize</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02153">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aa999ff2585ad75b95954a9323f63c32b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa999ff2585ad75b95954a9323f63c32b">&#9670;&nbsp;</a></span>Softmax()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Softmax </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>in</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>out</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputTensorInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>beta</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>axis</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo. </p>
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02183">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a4a180e425d4c19b2cdea4ce5760180e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4a180e425d4c19b2cdea4ce5760180e1">&#9670;&nbsp;</a></span>SpaceToBatchNd()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void SpaceToBatchNd </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_batch_nd_descriptor.xhtml">SpaceToBatchNdDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>params</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputData</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="structarmnn_1_1_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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5e1dc69443b64ad16b669388a6023f7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5e1dc69443b64ad16b669388a6023f7a">&#9670;&nbsp;</a></span>SpaceToDepth()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void SpaceToDepth </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_space_to_depth_descriptor.xhtml">SpaceToDepthDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>params</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputData</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="ac4d30f99e7fa46fe375e925a6ad537be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4d30f99e7fa46fe375e925a6ad537be">&#9670;&nbsp;</a></span>Split()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Split </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a427c3d26d05b518b1ace407035f5920e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a427c3d26d05b518b1ace407035f5920e">&#9670;&nbsp;</a></span>Splitter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::Splitter </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_splitter_queue_descriptor.xhtml">SplitterQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02273">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6ef2dcac2ec0683d52df1b051404e7d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6ef2dcac2ec0683d52df1b051404e7d6">&#9670;&nbsp;</a></span>Stack()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void Stack </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_stack_queue_descriptor.xhtml">StackQueueDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>data</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <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>
+ <td class="paramname"><em>inputs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>output</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02328">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<div class="ttc" id="classarmnn_1_1_tensor_shape_xhtml"><div class="ttname"><a href="classarmnn_1_1_tensor_shape.xhtml">armnn::TensorShape</a></div><div class="ttdef"><b>Definition:</b> <a href="_tensor_8hpp_source.xhtml#l00020">Tensor.hpp:20</a></div></div>
+<div class="ttc" id="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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a637fea04314a9870c1dc4355c1bed429"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a637fea04314a9870c1dc4355c1bed429">&#9670;&nbsp;</a></span>StrEqual()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool armnn::StrEqual </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>strA</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char(&amp;)&#160;</td>
+ <td class="paramname"><em>strB</em>[N]&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_types_utils_8hpp_source.xhtml#l00148">ParseComputeDevice()</a>.</p>
+<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 -->
+</div>
+</div>
+<a id="a86d7a7168ac00b75b4971f9aad623698"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86d7a7168ac00b75b4971f9aad623698">&#9670;&nbsp;</a></span>StridedSlice()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void StridedSlice </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputInfo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_strided_slice_descriptor.xhtml">StridedSliceDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>params</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const void *&#160;</td>
+ <td class="paramname"><em>inputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>outputData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>dataTypeSize</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_serializer_tests_8cpp_source.xhtml#l02395">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a14d7f180bf51e86850305965c3707e07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a14d7f180bf51e86850305965c3707e07">&#9670;&nbsp;</a></span>swap() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::swap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>first</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_origins_descriptor.xhtml">OriginsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>second</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a686b8288a04b3ffff67d560eea53f6be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a686b8288a04b3ffff67d560eea53f6be">&#9670;&nbsp;</a></span>swap() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::swap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>first</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structarmnn_1_1_views_descriptor.xhtml">ViewsDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>second</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_descriptors_8cpp_source.xhtml#l00351">ViewsDescriptor::swap</a>.</p>
+
+<p class="reference">Referenced by <a class="el" href="_descriptors_8cpp_source.xhtml#l00342">swap()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a14cfd39cfc30682fa821ade3dd298426"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a14cfd39cfc30682fa821ade3dd298426">&#9670;&nbsp;</a></span>TestQuantizeConvolution2d()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::TestQuantizeConvolution2d </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>useBiases</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01231">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a5abbe8a9ee003c1379a921dbe2745b81"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5abbe8a9ee003c1379a921dbe2745b81">&#9670;&nbsp;</a></span>TestQuantizeDepthwiseConvolution2d()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::TestQuantizeDepthwiseConvolution2d </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>useBiases</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01317">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="afa7a0a639e2772ff2ced67d77be810c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afa7a0a639e2772ff2ced67d77be810c0">&#9670;&nbsp;</a></span>TestQuantizeTransposeConvolution2d()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::TestQuantizeTransposeConvolution2d </td>
+ <td>(</td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>useBiases</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l02677">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<div class="ttc" id="namespacearmnn_xhtml_a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c"><div class="ttname"><a href="namespacearmnn.xhtml#a4dc0adc6737b5944e7671bee71788407acaf9b6b99962bf5c2264824231d7a40c">armnn::BoostLogSeverityMapping::info</a></div></div>
+<div class="ttc" id="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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2748f45e58b1c612d473043f711d1434"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2748f45e58b1c612d473043f711d1434">&#9670;&nbsp;</a></span>TopKSort()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void TopKSort </td>
+ <td>(</td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>k</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>values</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned int&#160;</td>
+ <td class="paramname"><em>numElement</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="affec174d91f234497dfbceba5e251dee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#affec174d91f234497dfbceba5e251dee">&#9670;&nbsp;</a></span>TransposeConvolution2dImpl()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void TransposeConvolution2dImpl </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_transpose_convolution2d_descriptor.xhtml">TransposeConvolution2dDescriptor</a> &amp;&#160;</td>
+ <td class="paramname"><em>descriptor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>inputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>inputDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>outputShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_encoder.xhtml">Encoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>outputEncoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_shape.xhtml">TensorShape</a> &amp;&#160;</td>
+ <td class="paramname"><em>weightsShape</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; &amp;&#160;</td>
+ <td class="paramname"><em>weightsDecoder</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_decoder.xhtml">Decoder</a>&lt; float &gt; *&#160;</td>
+ <td class="paramname"><em>biasesDecoder</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_ref_transpose_convolution2d_workload_8cpp_source.xhtml#l00053">RefTransposeConvolution2dWorkload::Execute()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="aeaee60c3c6c67a7cf37bbef45b89fc0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeaee60c3c6c67a7cf37bbef45b89fc0a">&#9670;&nbsp;</a></span>TrueFunc()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool armnn::TrueFunc </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_optional.xhtml">Optional</a>&lt; std::string &amp;&gt;&#160;</td>
+ <td class="paramname"><em>reasonIfUnsupported</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Params &amp;&amp;...&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_ignore_unused_8hpp_source.xhtml#l00014">IgnoreUnused()</a>.</p>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a245661fc96c9c4a9b898e1d98c8c6962"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a245661fc96c9c4a9b898e1d98c8c6962">&#9670;&nbsp;</a></span>ValidateFullyConnectedLayer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::ValidateFullyConnectedLayer </td>
+ <td>(</td>
+ <td class="paramtype">const bool&#160;</td>
+ <td class="paramname"><em>biasEnabled</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_quantizer_test_8cpp_source.xhtml#l01145">BOOST_AUTO_TEST_CASE()</a>.</p>
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9667bea652e3a5ef81fea59b71513ced"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9667bea652e3a5ef81fea59b71513ced">&#9670;&nbsp;</a></span>VerifyTensorInfoDataType()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::VerifyTensorInfoDataType </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_tensor_info.xhtml">armnn::TensorInfo</a> &amp;&#160;</td>
+ <td class="paramname"><em>info</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="namespacearmnn.xhtml#ad8ed01ff3ff33333d8e19db4d2818bb6">armnn::DataType</a>&#160;</td>
+ <td class="paramname"><em>dataType</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+<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>
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a9835ef753dda5b5a2fe827680e41fda7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9835ef753dda5b5a2fe827680e41fda7">&#9670;&nbsp;</a></span>VisitLayers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::VisitLayers </td>
+ <td>(</td>
+ <td class="paramtype">const LayerContainer &amp;&#160;</td>
+ <td class="paramname"><em>layerContainer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;&#160;</td>
+ <td class="paramname"><em>visitor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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 -->
+</div>
+</div>
+<a id="a6482907b4c57873e197324f5cb66fd4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6482907b4c57873e197324f5cb66fd4d">&#9670;&nbsp;</a></span>VisitLayersTopologically()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void armnn::VisitLayersTopologically </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classarmnn_1_1_i_network.xhtml">INetwork</a> *&#160;</td>
+ <td class="paramname"><em>inputNetwork</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classarmnn_1_1_i_layer_visitor.xhtml">ILayerVisitor</a> &amp;&#160;</td>
+ <td class="paramname"><em>visitor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+<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>
+<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>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2192b5ff59aacdb27f8b0238323915dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2192b5ff59aacdb27f8b0238323915dc">&#9670;&nbsp;</a></span>WrapClError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classarmnn_1_1_runtime_exception.xhtml">RuntimeException</a> armnn::WrapClError </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="namespacearmnn.xhtml#a93a3ba385cad27c4774e5fe64c025d3da902b0d55fddef6f8d651fe1035b7d4bd">cl::Error</a> &amp;&#160;</td>
+ <td class="paramname"><em>clError</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structarmnn_1_1_check_location.xhtml">CheckLocation</a> &amp;&#160;</td>
+ <td class="paramname"><em>location</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">References <a class="el" href="_exceptions_8cpp_source.xhtml#l00032">Exception::what()</a>.</p>
+
+<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>
+<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 -->
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="aacc0d11e271ebbfcff9d613dd17604aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aacc0d11e271ebbfcff9d613dd17604aa">&#9670;&nbsp;</a></span>g_AggregateProfilingEventsByInference</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool g_AggregateProfilingEventsByInference = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a09bdfaa922d72ce0d9ec014dfa8f8c95"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a09bdfaa922d72ce0d9ec014dfa8f8c95">&#9670;&nbsp;</a></span>g_AsymmS8QuantizationBase</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float g_AsymmS8QuantizationBase = 255.0f</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a19994153bdbd7710f0af3973403bc4cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a19994153bdbd7710f0af3973403bc4cc">&#9670;&nbsp;</a></span>g_AsymmU8QuantizationBase</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float g_AsymmU8QuantizationBase = 255.0f</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a43ecd194778b7653578044060ba8695e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43ecd194778b7653578044060ba8695e">&#9670;&nbsp;</a></span>g_ProfilingEventCountHint</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr std::size_t g_ProfilingEventCountHint = 1024</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a1465480794787d2278d3f0d2e6d887b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1465480794787d2278d3f0d2e6d887b4">&#9670;&nbsp;</a></span>g_SymmS16QuantizationBase</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float g_SymmS16QuantizationBase = 32767.0f</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="acd7f8820d124166a38c95bc8ad38811b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd7f8820d124166a38c95bc8ad38811b">&#9670;&nbsp;</a></span>g_SymmS8QuantizationBase</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float g_SymmS8QuantizationBase = 127.0f</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a1a9a6dea47de10df8e3c76dd45df56fb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a9a6dea47de10df8e3c76dd45df56fb">&#9670;&nbsp;</a></span>g_TestTolerance</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float g_TestTolerance = 0.000001f</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a41794552ff67b0dad16de60f9b8e7d7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41794552ff67b0dad16de60f9b8e7d7c">&#9670;&nbsp;</a></span>g_WriteProfilingEventSequence</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool g_WriteProfilingEventSequence = <a class="el" href="_ref_layer_tests_8cpp.xhtml#a37f1c3ccc9fc906be85185350dd83d48">true</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a6ce7e56eb10e440463f09eee8f213adc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6ce7e56eb10e440463f09eee8f213adc">&#9670;&nbsp;</a></span>g_WriteReportToStdOutOnProfilerDestruction</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr bool g_WriteReportToStdOutOnProfilerDestruction = <a class="el" href="_ref_layer_tests_8cpp.xhtml#af3b727ae5a13ff472892ab8bda2eb1b5">false</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+</div>
+</div>
+<a id="a602ddc6408c3347ba4c1eba623003984"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a602ddc6408c3347ba4c1eba623003984">&#9670;&nbsp;</a></span>LOWEST_CAPTURE_PERIOD</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr unsigned int LOWEST_CAPTURE_PERIOD = 10000u</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>The lowest performance data capture interval we support is 10 miliseconds. </p>
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="abdcd184ed3bd648bb31d385040cafd5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abdcd184ed3bd648bb31d385040cafd5d">&#9670;&nbsp;</a></span>MaxNumOfTensorDimensions</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">constexpr unsigned int MaxNumOfTensorDimensions = 5U</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<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>
+
+</div>
+</div>
+<a id="a680b729be51e88d93f2cbbdfeb5eaf4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a680b729be51e88d93f2cbbdfeb5eaf4d">&#9670;&nbsp;</a></span>tl_Profiler</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">thread_local <a class="el" href="classarmnn_1_1_profiler.xhtml">Profiler</a>* tl_Profiler = nullptr</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<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>
+
+<p class="reference">Referenced by <a class="el" href="_profiling_8cpp_source.xhtml#l00499">ProfilerManager::GetProfiler()</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="namespacearmnn.xhtml">armnn</a></li>
+ <li class="footer">Generated on Fri Mar 13 2020 16:09:17 for ArmNN by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
+ </ul>
+</div>
+</body>
+</html>