arm__nnfunctions_8h.html 75 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <title>arm_nnfunctions.h File Reference</title>
  7. <title>CMSIS-NN: arm_nnfunctions.h File Reference</title>
  8. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  9. <link href="cmsis.css" rel="stylesheet" type="text/css" />
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <script type="text/javascript" src="printComponentTabs.js"></script>
  13. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  14. <script type="text/javascript" src="resize.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. $(document).ready(initResizable);
  18. $(window).load(resizeHeight);
  19. </script>
  20. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  21. <script type="text/javascript" src="search/search.js"></script>
  22. <script type="text/javascript">
  23. $(document).ready(function() { searchBox.OnSelectItem(0); });
  24. </script>
  25. </head>
  26. <body>
  27. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  28. <div id="titlearea">
  29. <table cellspacing="0" cellpadding="0">
  30. <tbody>
  31. <tr style="height: 46px;">
  32. <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  33. <td style="padding-left: 0.5em;">
  34. <div id="projectname">CMSIS-NN
  35. &#160;<span id="projectnumber">Version 1.3.0</span>
  36. </div>
  37. <div id="projectbrief">CMSIS NN Software Library</div>
  38. </td>
  39. </tr>
  40. </tbody>
  41. </table>
  42. </div>
  43. <!-- end header part -->
  44. <div id="CMSISnav" class="tabs1">
  45. <ul class="tablist">
  46. <script type="text/javascript">
  47. <!--
  48. writeComponentTabs.call(this);
  49. //-->
  50. </script>
  51. </ul>
  52. </div>
  53. <!-- Generated by Doxygen 1.8.6 -->
  54. <script type="text/javascript">
  55. var searchBox = new SearchBox("searchBox", "search",false,'Search');
  56. </script>
  57. <div id="navrow1" class="tabs">
  58. <ul class="tablist">
  59. <li><a href="index.html"><span>Main&#160;Page</span></a></li>
  60. <li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
  61. <li><a href="modules.html"><span>Reference</span></a></li>
  62. <li>
  63. <div id="MSearchBox" class="MSearchBoxInactive">
  64. <span class="left">
  65. <img id="MSearchSelect" src="search/mag_sel.png"
  66. onmouseover="return searchBox.OnSearchSelectShow()"
  67. onmouseout="return searchBox.OnSearchSelectHide()"
  68. alt=""/>
  69. <input type="text" id="MSearchField" value="Search" accesskey="S"
  70. onfocus="searchBox.OnSearchFieldFocus(true)"
  71. onblur="searchBox.OnSearchFieldFocus(false)"
  72. onkeyup="searchBox.OnSearchFieldChange(event)"/>
  73. </span><span class="right">
  74. <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
  75. </span>
  76. </div>
  77. </li>
  78. </ul>
  79. </div>
  80. </div><!-- top -->
  81. <div id="side-nav" class="ui-resizable side-nav-resizable">
  82. <div id="nav-tree">
  83. <div id="nav-tree-contents">
  84. <div id="nav-sync" class="sync"></div>
  85. </div>
  86. </div>
  87. <div id="splitbar" style="-moz-user-select:none;"
  88. class="ui-resizable-handle">
  89. </div>
  90. </div>
  91. <script type="text/javascript">
  92. $(document).ready(function(){initNavTree('arm__nnfunctions_8h.html','');});
  93. </script>
  94. <div id="doc-content">
  95. <!-- window showing the filter options -->
  96. <div id="MSearchSelectWindow"
  97. onmouseover="return searchBox.OnSearchSelectShow()"
  98. onmouseout="return searchBox.OnSearchSelectHide()"
  99. onkeydown="return searchBox.OnSearchSelectKey(event)">
  100. <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>
  101. <!-- iframe showing the search results (closed by default) -->
  102. <div id="MSearchResultsWindow">
  103. <iframe src="javascript:void(0)" frameborder="0"
  104. name="MSearchResults" id="MSearchResults">
  105. </iframe>
  106. </div>
  107. <div class="header">
  108. <div class="summary">
  109. <a href="#define-members">Macros</a> &#124;
  110. <a href="#func-members">Functions</a> </div>
  111. <div class="headertitle">
  112. <div class="title">arm_nnfunctions.h File Reference</div> </div>
  113. </div><!--header-->
  114. <div class="contents">
  115. <table class="memberdecls">
  116. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
  117. Macros</h2></td></tr>
  118. <tr class="memitem:a710b6e009261290c6151f329cf409530"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#a710b6e009261290c6151f329cf409530">USE_INTRINSIC</a></td></tr>
  119. <tr class="separator:a710b6e009261290c6151f329cf409530"><td class="memSeparator" colspan="2">&#160;</td></tr>
  120. </table><table class="memberdecls">
  121. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
  122. Functions</h2></td></tr>
  123. <tr class="memitem:ga6a0b2161ece62078228ead2d85bbcf28"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga6a0b2161ece62078228ead2d85bbcf28">arm_convolve_s8</a> (const q7_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_ch, const uint16_t input_batches, const q7_t *kernel, const uint16_t output_ch, const uint16_t kernel_x, const uint16_t kernel_y, const uint16_t pad_x, const uint16_t pad_y, const uint16_t stride_x, const uint16_t stride_y, const int32_t *bias, q7_t *output, const int32_t *output_shift, const int32_t *output_mult, const int32_t out_offset, const int32_t input_offset, const int32_t output_activation_min, const int32_t output_activation_max, const uint16_t output_x, const uint16_t output_y, q15_t *buffer_a)</td></tr>
  124. <tr class="memdesc:ga6a0b2161ece62078228ead2d85bbcf28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic s8 convolution function. <a href="group__NNConv.html#ga6a0b2161ece62078228ead2d85bbcf28">More...</a><br/></td></tr>
  125. <tr class="separator:ga6a0b2161ece62078228ead2d85bbcf28"><td class="memSeparator" colspan="2">&#160;</td></tr>
  126. <tr class="memitem:gaaf83450fd2d89432d9759df99b05737b"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gaaf83450fd2d89432d9759df99b05737b">arm_convolve_s8_get_buffer_size</a> (const uint16_t input_ch, const uint16_t kernel_x, const uint16_t kernel_y)</td></tr>
  127. <tr class="memdesc:gaaf83450fd2d89432d9759df99b05737b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required buffer size for s8 convolution function. <a href="group__NNConv.html#gaaf83450fd2d89432d9759df99b05737b">More...</a><br/></td></tr>
  128. <tr class="separator:gaaf83450fd2d89432d9759df99b05737b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  129. <tr class="memitem:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga210ae8d8fc1d12ee15b41f1fa6947681">arm_convolve_HWC_q7_basic</a> (const q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  130. <tr class="memdesc:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic Q7 convolution function. <a href="group__NNConv.html#ga210ae8d8fc1d12ee15b41f1fa6947681">More...</a><br/></td></tr>
  131. <tr class="separator:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="memSeparator" colspan="2">&#160;</td></tr>
  132. <tr class="memitem:ga4501fa22c0836002aa47ccc313dce252"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga4501fa22c0836002aa47ccc313dce252">arm_convolve_HWC_q7_basic_nonsquare</a> (const q7_t *Im_in, const uint16_t dim_im_in_x, const uint16_t dim_im_in_y, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel_x, const uint16_t dim_kernel_y, const uint16_t padding_x, const uint16_t padding_y, const uint16_t stride_x, const uint16_t stride_y, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out_x, const uint16_t dim_im_out_y, q15_t *bufferA, q7_t *bufferB)</td></tr>
  133. <tr class="memdesc:ga4501fa22c0836002aa47ccc313dce252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic Q7 convolution function (non-square shape) <a href="group__NNConv.html#ga4501fa22c0836002aa47ccc313dce252">More...</a><br/></td></tr>
  134. <tr class="separator:ga4501fa22c0836002aa47ccc313dce252"><td class="memSeparator" colspan="2">&#160;</td></tr>
  135. <tr class="memitem:ga55701f213b198084b52eab53097f1f58"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga55701f213b198084b52eab53097f1f58">arm_convolve_HWC_q15_basic</a> (const q15_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q15_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q15_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q15_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  136. <tr class="memdesc:ga55701f213b198084b52eab53097f1f58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic Q15 convolution function. <a href="group__NNConv.html#ga55701f213b198084b52eab53097f1f58">More...</a><br/></td></tr>
  137. <tr class="separator:ga55701f213b198084b52eab53097f1f58"><td class="memSeparator" colspan="2">&#160;</td></tr>
  138. <tr class="memitem:gae00d3c1285907d59657369fc98bcc83f"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gae00d3c1285907d59657369fc98bcc83f">arm_convolve_HWC_q7_fast</a> (const q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  139. <tr class="memdesc:gae00d3c1285907d59657369fc98bcc83f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast Q7 convolution function. <a href="group__NNConv.html#gae00d3c1285907d59657369fc98bcc83f">More...</a><br/></td></tr>
  140. <tr class="separator:gae00d3c1285907d59657369fc98bcc83f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  141. <tr class="memitem:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gabc6d6b991024e9e5c5cdbd7489de88ef">arm_convolve_HWC_q7_fast_nonsquare</a> (const q7_t *Im_in, const uint16_t dim_im_in_x, const uint16_t dim_im_in_y, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel_x, const uint16_t dim_kernel_y, const uint16_t padding_x, const uint16_t padding_y, const uint16_t stride_x, const uint16_t stride_y, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out_x, const uint16_t dim_im_out_y, q15_t *bufferA, q7_t *bufferB)</td></tr>
  142. <tr class="memdesc:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast Q7 convolution function (non-sqaure shape) <a href="group__NNConv.html#gabc6d6b991024e9e5c5cdbd7489de88ef">More...</a><br/></td></tr>
  143. <tr class="separator:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
  144. <tr class="memitem:ga110adcfdaab356c750c6270aa5e05f29"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga110adcfdaab356c750c6270aa5e05f29">arm_convolve_1x1_HWC_q7_fast_nonsquare</a> (const q7_t *Im_in, const uint16_t dim_im_in_x, const uint16_t dim_im_in_y, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel_x, const uint16_t dim_kernel_y, const uint16_t padding_x, const uint16_t padding_y, const uint16_t stride_x, const uint16_t stride_y, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out_x, const uint16_t dim_im_out_y, q15_t *bufferA, q7_t *bufferB)</td></tr>
  145. <tr class="memdesc:ga110adcfdaab356c750c6270aa5e05f29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast Q7 version of 1x1 convolution (non-sqaure shape) <a href="group__NNConv.html#ga110adcfdaab356c750c6270aa5e05f29">More...</a><br/></td></tr>
  146. <tr class="separator:ga110adcfdaab356c750c6270aa5e05f29"><td class="memSeparator" colspan="2">&#160;</td></tr>
  147. <tr class="memitem:gadfcad0bae34328dc806dc88cde173faa"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gadfcad0bae34328dc806dc88cde173faa">arm_convolve_1x1_s8_fast</a> (const q7_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_ch, const uint16_t input_batches, const q7_t *kernel, const uint16_t output_ch, const uint16_t pad_x, const uint16_t pad_y, const uint16_t stride_x, const uint16_t stride_y, const int32_t *bias, q7_t *output, const int32_t *output_shift, const int32_t *output_mult, const int32_t out_offset, const int32_t input_offset, const int32_t out_activation_min, const int32_t out_activation_max, const uint16_t output_x, const uint16_t output_y, q15_t *buffer_a)</td></tr>
  148. <tr class="memdesc:gadfcad0bae34328dc806dc88cde173faa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast s8 version for 1x1 convolution (non-square shape) <a href="group__NNConv.html#gadfcad0bae34328dc806dc88cde173faa">More...</a><br/></td></tr>
  149. <tr class="separator:gadfcad0bae34328dc806dc88cde173faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
  150. <tr class="memitem:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga09ed5df0234c7eb334a7264dd9e4c833">arm_convolve_1x1_s8_fast_get_buffer_size</a> (const uint16_t input_ch)</td></tr>
  151. <tr class="memdesc:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required buffer size for the fast 1x1 convolution (non-square shape) s8 convolution function. <a href="group__NNConv.html#ga09ed5df0234c7eb334a7264dd9e4c833">More...</a><br/></td></tr>
  152. <tr class="separator:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="memSeparator" colspan="2">&#160;</td></tr>
  153. <tr class="memitem:ga2d9c129189832572cf0bc97ff9e73e54"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga2d9c129189832572cf0bc97ff9e73e54">arm_convolve_1_x_n_s8</a> (const q7_t *input, const uint16_t input_x, const uint16_t input_ch, const uint16_t input_batches, const q7_t *kernel, const uint16_t output_ch, const uint16_t kernel_x, const uint16_t pad_x, const uint16_t stride_x, const int32_t *bias, q7_t *output, const int32_t *output_shift, const int32_t *output_mult, const int32_t out_offset, const int32_t input_offset, const int32_t out_activation_min, const int32_t out_activation_max, const uint16_t output_x, q15_t *buffer_a)</td></tr>
  154. <tr class="memdesc:ga2d9c129189832572cf0bc97ff9e73e54"><td class="mdescLeft">&#160;</td><td class="mdescRight">1xn convolution <a href="group__NNConv.html#ga2d9c129189832572cf0bc97ff9e73e54">More...</a><br/></td></tr>
  155. <tr class="separator:ga2d9c129189832572cf0bc97ff9e73e54"><td class="memSeparator" colspan="2">&#160;</td></tr>
  156. <tr class="memitem:gab34cb94c592df768774d8bcac03d7e5c"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gab34cb94c592df768774d8bcac03d7e5c">arm_convolve_1_x_n_s8_get_buffer_size</a> (const uint16_t input_ch, const uint16_t kernel_x, const uint16_t kernel_y)</td></tr>
  157. <tr class="memdesc:gab34cb94c592df768774d8bcac03d7e5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required additional buffer size for 1xn convolution. <a href="group__NNConv.html#gab34cb94c592df768774d8bcac03d7e5c">More...</a><br/></td></tr>
  158. <tr class="separator:gab34cb94c592df768774d8bcac03d7e5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  159. <tr class="memitem:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga98f2ead67d7cbdf558b0cd8a3b8fc148">arm_convolve_HWC_q7_RGB</a> (const q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  160. <tr class="memdesc:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 version of convolution for RGB image. <a href="group__NNConv.html#ga98f2ead67d7cbdf558b0cd8a3b8fc148">More...</a><br/></td></tr>
  161. <tr class="separator:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="memSeparator" colspan="2">&#160;</td></tr>
  162. <tr class="memitem:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga4efb1ccbbaa7dd936961989dcb443f50">arm_convolve_HWC_q15_fast</a> (const q15_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q15_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q15_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q15_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  163. <tr class="memdesc:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast Q15 convolution function. <a href="group__NNConv.html#ga4efb1ccbbaa7dd936961989dcb443f50">More...</a><br/></td></tr>
  164. <tr class="separator:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="memSeparator" colspan="2">&#160;</td></tr>
  165. <tr class="memitem:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga614ec3b71eb96e29952ec3f09e7b9c3c">arm_convolve_HWC_q15_fast_nonsquare</a> (const q15_t *Im_in, const uint16_t dim_im_in_x, const uint16_t dim_im_in_y, const uint16_t ch_im_in, const q15_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel_x, const uint16_t dim_kernel_y, const uint16_t padding_x, const uint16_t padding_y, const uint16_t stride_x, const uint16_t stride_y, const q15_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q15_t *Im_out, const uint16_t dim_im_out_x, const uint16_t dim_im_out_y, q15_t *bufferA, q7_t *bufferB)</td></tr>
  166. <tr class="memdesc:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fast Q15 convolution function (non-sqaure shape) <a href="group__NNConv.html#ga614ec3b71eb96e29952ec3f09e7b9c3c">More...</a><br/></td></tr>
  167. <tr class="separator:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  168. <tr class="memitem:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gad3d21b3bc6dbd6f3b97d01104349cb0a">arm_depthwise_separable_conv_HWC_q7</a> (const q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out, q15_t *bufferA, q7_t *bufferB)</td></tr>
  169. <tr class="memdesc:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 depthwise separable convolution function. <a href="group__NNConv.html#gad3d21b3bc6dbd6f3b97d01104349cb0a">More...</a><br/></td></tr>
  170. <tr class="separator:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  171. <tr class="memitem:ga32ac508c5467813a84f74f96655dc697"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga32ac508c5467813a84f74f96655dc697">arm_depthwise_separable_conv_HWC_q7_nonsquare</a> (const q7_t *Im_in, const uint16_t dim_im_in_x, const uint16_t dim_im_in_y, const uint16_t ch_im_in, const q7_t *wt, const uint16_t ch_im_out, const uint16_t dim_kernel_x, const uint16_t dim_kernel_y, const uint16_t padding_x, const uint16_t padding_y, const uint16_t stride_x, const uint16_t stride_y, const q7_t *bias, const uint16_t bias_shift, const uint16_t out_shift, q7_t *Im_out, const uint16_t dim_im_out_x, const uint16_t dim_im_out_y, q15_t *bufferA, q7_t *bufferB)</td></tr>
  172. <tr class="memdesc:ga32ac508c5467813a84f74f96655dc697"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 depthwise separable convolution function (non-square shape) <a href="group__NNConv.html#ga32ac508c5467813a84f74f96655dc697">More...</a><br/></td></tr>
  173. <tr class="separator:ga32ac508c5467813a84f74f96655dc697"><td class="memSeparator" colspan="2">&#160;</td></tr>
  174. <tr class="memitem:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gae7e0c94c970bfd59d9c5e2331ce84fe7">arm_depthwise_conv_s8</a> (const q7_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_ch, const q7_t *kernel, const uint16_t output_ch, const uint16_t ch_mult, const uint16_t kernel_x, const uint16_t kernel_y, const uint16_t pad_x, const uint16_t pad_y, const uint16_t stride_x, const uint16_t stride_y, const int32_t *bias, q7_t *output, const int32_t *output_shift, const int32_t *output_mult, const uint16_t output_x, const uint16_t output_y, const int32_t output_offset, const int32_t input_offset, const int32_t output_activation_min, const int32_t output_activation_max, const uint16_t dilation_x, const uint16_t dilation_y, q15_t *buffer_a)</td></tr>
  175. <tr class="memdesc:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Basic s8 depthwise convolution function. <a href="group__NNConv.html#gae7e0c94c970bfd59d9c5e2331ce84fe7">More...</a><br/></td></tr>
  176. <tr class="separator:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  177. <tr class="memitem:gae86b03224e6edf28f54247594b6c8bf9"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gae86b03224e6edf28f54247594b6c8bf9">arm_depthwise_conv_3x3_s8</a> (const int8_t *input, const int32_t input_x, const int32_t input_y, const int32_t input_ch, const int8_t *kernel, const int32_t output_ch, const int32_t pad_x, const int32_t pad_y, const int32_t stride_x, const int32_t stride_y, const int32_t *bias, int8_t *output, const int32_t *output_shift, const int32_t *output_mult, const int32_t output_x, const int32_t output_y, const int32_t output_offset, const int32_t input_offset, const int32_t output_activation_min, const int32_t output_activation_max, const int32_t dilation_x, const int32_t dilation_y, int16_t *buffer_a)</td></tr>
  178. <tr class="memdesc:gae86b03224e6edf28f54247594b6c8bf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Optimized s8 depthwise convolution function for 3x3 kernel size with constraint that in_channel equals out_channel. <a href="group__NNConv.html#gae86b03224e6edf28f54247594b6c8bf9">More...</a><br/></td></tr>
  179. <tr class="separator:gae86b03224e6edf28f54247594b6c8bf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
  180. <tr class="memitem:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga3acc8b0cd5bd5d975fdf5a615261f0b1">arm_depthwise_conv_s8_opt</a> (const q7_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_ch, const q7_t *kernel, const uint16_t output_ch, const uint16_t kernel_x, const uint16_t kernel_y, const uint16_t pad_x, const uint16_t pad_y, const uint16_t stride_x, const uint16_t stride_y, const int32_t *bias, q7_t *output, const int32_t *output_shift, const int32_t *output_mult, const uint16_t output_x, const uint16_t output_y, const int32_t output_offset, const int32_t input_offset, const int32_t output_activation_min, const int32_t output_activation_max, const uint16_t dilation_x, const uint16_t dilation_y, q15_t *buffer_a)</td></tr>
  181. <tr class="memdesc:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Optimized s8 depthwise convolution function with constraint that in_channel equals out_channel. <a href="group__NNConv.html#ga3acc8b0cd5bd5d975fdf5a615261f0b1">More...</a><br/></td></tr>
  182. <tr class="separator:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
  183. <tr class="memitem:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#gaa53d31632c765b9b4bbd490d0ae3c0c1">arm_depthwise_conv_s8_opt_get_buffer_size</a> (const uint16_t input_ch, const uint16_t kernel_x, const uint16_t kernel_y)</td></tr>
  184. <tr class="memdesc:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required buffer size for optimized s8 depthwise convolution function with constraint that in_channel equals out_channel. <a href="group__NNConv.html#gaa53d31632c765b9b4bbd490d0ae3c0c1">More...</a><br/></td></tr>
  185. <tr class="separator:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
  186. <tr class="memitem:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#ga8b7e0c2e989e8c75f0dc789f3115323d">arm_fully_connected_q7</a> (const q7_t *pV, const q7_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q7_t *pOut, q15_t *vec_buffer)</td></tr>
  187. <tr class="memdesc:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 basic fully-connected layer function. <a href="group__FC.html#ga8b7e0c2e989e8c75f0dc789f3115323d">More...</a><br/></td></tr>
  188. <tr class="separator:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="memSeparator" colspan="2">&#160;</td></tr>
  189. <tr class="memitem:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#ga2e580c510d9dc26a2e8e422f805b9bc0">arm_fully_connected_s8</a> (const int8_t *pInput, const int8_t *pWeight, const uint16_t col_dim, const uint16_t row_dim, const uint16_t nb_batches, const int32_t input_offset, const int32_t filter_offset, const int32_t out_mult, const int32_t out_shift, const int32_t output_offset, const int32_t *pBias, int8_t *pOut, const int32_t output_activation_min, const int32_t output_activation_max, q15_t *vec_buffer)</td></tr>
  190. <tr class="memdesc:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">S8 basic fully-connected and matrix multiplication layer function for TF Lite. <a href="group__FC.html#ga2e580c510d9dc26a2e8e422f805b9bc0">More...</a><br/></td></tr>
  191. <tr class="separator:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
  192. <tr class="memitem:gafaf11325831bf8d8a915a88f53689263"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#gafaf11325831bf8d8a915a88f53689263">arm_fully_connected_s8_get_buffer_size</a> (const uint16_t col_dim)</td></tr>
  193. <tr class="memdesc:gafaf11325831bf8d8a915a88f53689263"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required buffer size for S8 basic fully-connected and matrix multiplication layer function for TF Lite. <a href="group__FC.html#gafaf11325831bf8d8a915a88f53689263">More...</a><br/></td></tr>
  194. <tr class="separator:gafaf11325831bf8d8a915a88f53689263"><td class="memSeparator" colspan="2">&#160;</td></tr>
  195. <tr class="memitem:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#gaf82b71ef472a38f8fc9ac414d9d07e67">arm_fully_connected_q7_opt</a> (const q7_t *pV, const q7_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q7_t *pOut, q15_t *vec_buffer)</td></tr>
  196. <tr class="memdesc:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 opt fully-connected layer function. <a href="group__FC.html#gaf82b71ef472a38f8fc9ac414d9d07e67">More...</a><br/></td></tr>
  197. <tr class="separator:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="memSeparator" colspan="2">&#160;</td></tr>
  198. <tr class="memitem:gaac666c212b209e636c2369dd5c75d0dc"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#gaac666c212b209e636c2369dd5c75d0dc">arm_fully_connected_q15</a> (const q15_t *pV, const q15_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q15_t *bias, q15_t *pOut, q15_t *vec_buffer)</td></tr>
  199. <tr class="memdesc:gaac666c212b209e636c2369dd5c75d0dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q15 basic fully-connected layer function. <a href="group__FC.html#gaac666c212b209e636c2369dd5c75d0dc">More...</a><br/></td></tr>
  200. <tr class="separator:gaac666c212b209e636c2369dd5c75d0dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
  201. <tr class="memitem:ga062912078da113f5dd2004fd919a0ff2"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#ga062912078da113f5dd2004fd919a0ff2">arm_fully_connected_q15_opt</a> (const q15_t *pV, const q15_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q15_t *bias, q15_t *pOut, q15_t *vec_buffer)</td></tr>
  202. <tr class="memdesc:ga062912078da113f5dd2004fd919a0ff2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q15 opt fully-connected layer function. <a href="group__FC.html#ga062912078da113f5dd2004fd919a0ff2">More...</a><br/></td></tr>
  203. <tr class="separator:ga062912078da113f5dd2004fd919a0ff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  204. <tr class="memitem:ga4a1521e7532a1e62d71f3b12762016e2"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#ga4a1521e7532a1e62d71f3b12762016e2">arm_fully_connected_mat_q7_vec_q15</a> (const q15_t *pV, const q7_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q15_t *pOut, q15_t *vec_buffer)</td></tr>
  205. <tr class="memdesc:ga4a1521e7532a1e62d71f3b12762016e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mixed Q15-Q7 fully-connected layer function. <a href="group__FC.html#ga4a1521e7532a1e62d71f3b12762016e2">More...</a><br/></td></tr>
  206. <tr class="separator:ga4a1521e7532a1e62d71f3b12762016e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
  207. <tr class="memitem:gae3857bb6375692e81dde8cbd70adec08"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__FC.html#gae3857bb6375692e81dde8cbd70adec08">arm_fully_connected_mat_q7_vec_q15_opt</a> (const q15_t *pV, const q7_t *pM, const uint16_t dim_vec, const uint16_t num_of_rows, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q15_t *pOut, q15_t *vec_buffer)</td></tr>
  208. <tr class="memdesc:gae3857bb6375692e81dde8cbd70adec08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mixed Q15-Q7 opt fully-connected layer function. <a href="group__FC.html#gae3857bb6375692e81dde8cbd70adec08">More...</a><br/></td></tr>
  209. <tr class="separator:gae3857bb6375692e81dde8cbd70adec08"><td class="memSeparator" colspan="2">&#160;</td></tr>
  210. <tr class="memitem:abc4fb258cfe8500ee68e812a293a80a3"><td class="memItemLeft" align="right" valign="top">q7_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#abc4fb258cfe8500ee68e812a293a80a3">arm_nn_mat_mult_kernel_q7_q15</a> (const q7_t *pA, const q15_t *pInBuffer, const uint16_t ch_im_out, const uint16_t numCol_A, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q7_t *pOut)</td></tr>
  211. <tr class="memdesc:abc4fb258cfe8500ee68e812a293a80a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-Multiplication Kernels for Convolution. <a href="#abc4fb258cfe8500ee68e812a293a80a3">More...</a><br/></td></tr>
  212. <tr class="separator:abc4fb258cfe8500ee68e812a293a80a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  213. <tr class="memitem:a2da69a593037381cd149616f2fd57cce"><td class="memItemLeft" align="right" valign="top">q7_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#a2da69a593037381cd149616f2fd57cce">arm_nn_mat_mult_kernel_s8_s16</a> (const q7_t *input_a, const q15_t *input_b, const uint16_t output_ch, const int32_t *out_shift, const int32_t *out_mult, const int32_t out_offset, const int16_t activation_min, const int16_t activation_max, const uint16_t num_col_a, const int32_t *const output_bias, q7_t *out_0)</td></tr>
  214. <tr class="memdesc:a2da69a593037381cd149616f2fd57cce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-multiplication function for convolution with per-channel requantization. <a href="#a2da69a593037381cd149616f2fd57cce">More...</a><br/></td></tr>
  215. <tr class="separator:a2da69a593037381cd149616f2fd57cce"><td class="memSeparator" colspan="2">&#160;</td></tr>
  216. <tr class="memitem:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="memItemLeft" align="right" valign="top">q7_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#a1bbc24203cf1766cf75fa27db48b5eb4">arm_nn_mat_mult_kernel_s8_s16_reordered</a> (const q7_t *input_a, const q15_t *input_b, const uint16_t output_ch, const int32_t *out_shift, const int32_t *out_mult, const int32_t out_offset, const int16_t activation_min, const int16_t activation_max, const uint16_t num_col_a, const int32_t *const output_bias, q7_t *out_0)</td></tr>
  217. <tr class="memdesc:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-multiplication of re-ordered input B with A. <a href="#a1bbc24203cf1766cf75fa27db48b5eb4">More...</a><br/></td></tr>
  218. <tr class="separator:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
  219. <tr class="memitem:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="memItemLeft" align="right" valign="top">q7_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#aefe9c7ce9a65060a244b06dffe74c4b3">arm_nn_mat_mult_kernel_q7_q15_reordered</a> (const q7_t *pA, const q15_t *pInBuffer, const uint16_t ch_im_out, const uint16_t numCol_A, const uint16_t bias_shift, const uint16_t out_shift, const q7_t *bias, q7_t *pOut)</td></tr>
  220. <tr class="memdesc:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix-multiplication function for convolution with reordered columns. <a href="#aefe9c7ce9a65060a244b06dffe74c4b3">More...</a><br/></td></tr>
  221. <tr class="separator:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  222. <tr class="memitem:gabc9644ba533138059baa8b582734698c"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BasicMath.html#gabc9644ba533138059baa8b582734698c">arm_elementwise_add_s8</a> (const int8_t *input_1_vect, const int8_t *input_2_vect, const int32_t input_1_offset, const int32_t input_1_mult, const int32_t input_1_shift, const int32_t input_2_offset, const int32_t input_2_mult, const int32_t input_2_shift, const int32_t left_shift, int8_t *output, const int32_t out_offset, const int32_t out_mult, const int32_t out_shift, const int32_t out_activation_min, const int32_t out_activation_max, const uint32_t block_size)</td></tr>
  223. <tr class="memdesc:gabc9644ba533138059baa8b582734698c"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 element wise add of two vectors <a href="group__BasicMath.html#gabc9644ba533138059baa8b582734698c">More...</a><br/></td></tr>
  224. <tr class="separator:gabc9644ba533138059baa8b582734698c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  225. <tr class="memitem:ga64125471aeb41aef308e5e729f52da1f"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__BasicMath.html#ga64125471aeb41aef308e5e729f52da1f">arm_elementwise_mul_s8</a> (const int8_t *input_1_vect, const int8_t *input_2_vect, const int32_t input_1_offset, const int32_t input_2_offset, int8_t *output, const int32_t out_offset, const int32_t out_mult, const int32_t out_shift, const int32_t out_activation_min, const int32_t out_activation_max, const uint32_t block_size)</td></tr>
  226. <tr class="memdesc:ga64125471aeb41aef308e5e729f52da1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 element wise multiplication <a href="group__BasicMath.html#ga64125471aeb41aef308e5e729f52da1f">More...</a><br/></td></tr>
  227. <tr class="separator:ga64125471aeb41aef308e5e729f52da1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  228. <tr class="memitem:ga638e803b4fe00426f401783a6255ca30"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Acti.html#ga638e803b4fe00426f401783a6255ca30">arm_relu_q7</a> (q7_t *data, uint16_t size)</td></tr>
  229. <tr class="memdesc:ga638e803b4fe00426f401783a6255ca30"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 RELU function. <a href="group__Acti.html#ga638e803b4fe00426f401783a6255ca30">More...</a><br/></td></tr>
  230. <tr class="separator:ga638e803b4fe00426f401783a6255ca30"><td class="memSeparator" colspan="2">&#160;</td></tr>
  231. <tr class="memitem:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Acti.html#ga01a7a7c17f0cd544e29c4752daeecdc3">arm_relu6_s8</a> (q7_t *data, uint16_t size)</td></tr>
  232. <tr class="memdesc:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 ReLU6 function <a href="group__Acti.html#ga01a7a7c17f0cd544e29c4752daeecdc3">More...</a><br/></td></tr>
  233. <tr class="separator:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  234. <tr class="memitem:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Acti.html#ga53bcc00e54b802919bb3c89c143ee5ba">arm_relu_q15</a> (q15_t *data, uint16_t size)</td></tr>
  235. <tr class="memdesc:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q15 RELU function. <a href="group__Acti.html#ga53bcc00e54b802919bb3c89c143ee5ba">More...</a><br/></td></tr>
  236. <tr class="separator:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
  237. <tr class="memitem:ga79f11131ae6767d60e03b1f6506b1af8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Acti.html#ga79f11131ae6767d60e03b1f6506b1af8">arm_nn_activations_direct_q7</a> (q7_t *data, uint16_t size, uint16_t int_width, <a class="el" href="arm__nnsupportfunctions_8h.html#a7f41aa78cd9a0552fae9b348ee4831a0">arm_nn_activation_type</a> type)</td></tr>
  238. <tr class="memdesc:ga79f11131ae6767d60e03b1f6506b1af8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 neural network activation function using direct table look-up. <a href="group__Acti.html#ga79f11131ae6767d60e03b1f6506b1af8">More...</a><br/></td></tr>
  239. <tr class="separator:ga79f11131ae6767d60e03b1f6506b1af8"><td class="memSeparator" colspan="2">&#160;</td></tr>
  240. <tr class="memitem:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Acti.html#ga8932b57c8d0ee757511af2d40dcc11e7">arm_nn_activations_direct_q15</a> (q15_t *data, uint16_t size, uint16_t int_width, <a class="el" href="arm__nnsupportfunctions_8h.html#a7f41aa78cd9a0552fae9b348ee4831a0">arm_nn_activation_type</a> type)</td></tr>
  241. <tr class="memdesc:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q15 neural network activation function using direct table look-up. <a href="group__Acti.html#ga8932b57c8d0ee757511af2d40dcc11e7">More...</a><br/></td></tr>
  242. <tr class="separator:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
  243. <tr class="memitem:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#ga99afcdcc61eaf429ab3ee823702e44ce">arm_maxpool_q7_HWC</a> (q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const uint16_t dim_im_out, q7_t *bufferA, q7_t *Im_out)</td></tr>
  244. <tr class="memdesc:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 max pooling function. <a href="group__Pooling.html#ga99afcdcc61eaf429ab3ee823702e44ce">More...</a><br/></td></tr>
  245. <tr class="separator:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
  246. <tr class="memitem:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#gae4a7b07f97ec4313524c9fb9fbcb1f6a">arm_avepool_q7_HWC</a> (q7_t *Im_in, const uint16_t dim_im_in, const uint16_t ch_im_in, const uint16_t dim_kernel, const uint16_t padding, const uint16_t stride, const uint16_t dim_im_out, q7_t *bufferA, q7_t *Im_out)</td></tr>
  247. <tr class="memdesc:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 average pooling function. <a href="group__Pooling.html#gae4a7b07f97ec4313524c9fb9fbcb1f6a">More...</a><br/></td></tr>
  248. <tr class="separator:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
  249. <tr class="memitem:gaeda2a7c2689d698398fb85278b7d940b"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#gaeda2a7c2689d698398fb85278b7d940b">arm_avgpool_s8</a> (const int dim_src_height, const int dim_src_width, const int dim_dst_height, const int dim_dst_width, const int stride_height, const int stride_width, const int dim_kernel_height, const int dim_kernel_width, const int padding_height, const int padding_width, const int act_min, const int act_max, const int ch_src, int8_t *src, int16_t *bufferA, int8_t *dst)</td></tr>
  250. <tr class="memdesc:gaeda2a7c2689d698398fb85278b7d940b"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 average pooling function <a href="group__Pooling.html#gaeda2a7c2689d698398fb85278b7d940b">More...</a><br/></td></tr>
  251. <tr class="separator:gaeda2a7c2689d698398fb85278b7d940b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  252. <tr class="memitem:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#gaca9a9dfa088bec0c4ac16f14518cf6a3">arm_avgpool_s8_get_buffer_size</a> (const int dim_dst_width, const int ch_src)</td></tr>
  253. <tr class="memdesc:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the required buffer size for S8 average pooling function. <a href="group__Pooling.html#gaca9a9dfa088bec0c4ac16f14518cf6a3">More...</a><br/></td></tr>
  254. <tr class="separator:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
  255. <tr class="memitem:ga692bad3854c43c5b95c48de461ea9100"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#ga692bad3854c43c5b95c48de461ea9100">arm_max_pool_s8_opt</a> (const uint16_t input_y, const uint16_t input_x, const uint16_t output_y, const uint16_t output_x, const uint16_t stride_y, const uint16_t stride_x, const uint16_t kernel_y, const uint16_t kernel_x, const uint16_t pad_y, const uint16_t pad_x, const int8_t act_min, const int8_t act_max, const uint16_t depth, int8_t *input, int16_t *tmp_buffer, int8_t *output)</td></tr>
  256. <tr class="memdesc:ga692bad3854c43c5b95c48de461ea9100"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 DSP optimized max pooling function <a href="group__Pooling.html#ga692bad3854c43c5b95c48de461ea9100">More...</a><br/></td></tr>
  257. <tr class="separator:ga692bad3854c43c5b95c48de461ea9100"><td class="memSeparator" colspan="2">&#160;</td></tr>
  258. <tr class="memitem:ga9ba8703e0f24059167f445c978026764"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Pooling.html#ga9ba8703e0f24059167f445c978026764">arm_max_pool_s8</a> (const uint16_t input_y, const uint16_t input_x, const uint16_t output_y, const uint16_t output_x, const uint16_t stride_y, const uint16_t stride_x, const uint16_t kernel_y, const uint16_t kernel_x, const uint16_t pad_y, const uint16_t pad_x, const int8_t act_min, const int8_t act_max, const uint16_t channel_in, int8_t *input, int16_t *tmp_buffer, int8_t *output)</td></tr>
  259. <tr class="memdesc:ga9ba8703e0f24059167f445c978026764"><td class="mdescLeft">&#160;</td><td class="mdescRight">s8 pure C max pooling function <a href="group__Pooling.html#ga9ba8703e0f24059167f445c978026764">More...</a><br/></td></tr>
  260. <tr class="separator:ga9ba8703e0f24059167f445c978026764"><td class="memSeparator" colspan="2">&#160;</td></tr>
  261. <tr class="memitem:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Softmax.html#ga89aff212a97a3cf32d9d7ddf11a8f43e">arm_softmax_q7</a> (const q7_t *vec_in, const uint16_t dim_vec, q7_t *p_out)</td></tr>
  262. <tr class="memdesc:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 softmax function. <a href="group__Softmax.html#ga89aff212a97a3cf32d9d7ddf11a8f43e">More...</a><br/></td></tr>
  263. <tr class="separator:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="memSeparator" colspan="2">&#160;</td></tr>
  264. <tr class="memitem:ga894cfd80c260b946702755b5754e520f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Softmax.html#ga894cfd80c260b946702755b5754e520f">arm_softmax_with_batch_q7</a> (const q7_t *vec_in, const uint16_t nb_batches, const uint16_t dim_vec, q7_t *p_out)</td></tr>
  265. <tr class="memdesc:ga894cfd80c260b946702755b5754e520f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q7 softmax function with batch parameter. <a href="group__Softmax.html#ga894cfd80c260b946702755b5754e520f">More...</a><br/></td></tr>
  266. <tr class="separator:ga894cfd80c260b946702755b5754e520f"><td class="memSeparator" colspan="2">&#160;</td></tr>
  267. <tr class="memitem:ga1cacd8b84b8363079311987d0016ebe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Softmax.html#ga1cacd8b84b8363079311987d0016ebe5">arm_softmax_q15</a> (const q15_t *vec_in, const uint16_t dim_vec, q15_t *p_out)</td></tr>
  268. <tr class="memdesc:ga1cacd8b84b8363079311987d0016ebe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Q15 softmax function. <a href="group__Softmax.html#ga1cacd8b84b8363079311987d0016ebe5">More...</a><br/></td></tr>
  269. <tr class="separator:ga1cacd8b84b8363079311987d0016ebe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
  270. <tr class="memitem:gaf309cdd53978a85a39c9bfdc476aea17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Softmax.html#gaf309cdd53978a85a39c9bfdc476aea17">arm_softmax_s8</a> (const int8_t *input, const int32_t num_rows, const int32_t row_size, const int32_t mult, const int32_t shift, const int32_t diff_min, int8_t *output)</td></tr>
  271. <tr class="memdesc:gaf309cdd53978a85a39c9bfdc476aea17"><td class="mdescLeft">&#160;</td><td class="mdescRight">S8 softmax function. <a href="group__Softmax.html#gaf309cdd53978a85a39c9bfdc476aea17">More...</a><br/></td></tr>
  272. <tr class="separator:gaf309cdd53978a85a39c9bfdc476aea17"><td class="memSeparator" colspan="2">&#160;</td></tr>
  273. <tr class="memitem:gaa1627ed96bd597a8046d00689f077dce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Softmax.html#gaa1627ed96bd597a8046d00689f077dce">arm_softmax_u8</a> (const uint8_t *input, const int32_t num_rows, const int32_t row_size, const int32_t mult, const int32_t shift, const int32_t diff_min, uint8_t *output)</td></tr>
  274. <tr class="memdesc:gaa1627ed96bd597a8046d00689f077dce"><td class="mdescLeft">&#160;</td><td class="mdescRight">U8 softmax function. <a href="group__Softmax.html#gaa1627ed96bd597a8046d00689f077dce">More...</a><br/></td></tr>
  275. <tr class="separator:gaa1627ed96bd597a8046d00689f077dce"><td class="memSeparator" colspan="2">&#160;</td></tr>
  276. <tr class="memitem:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="memItemLeft" align="right" valign="top">arm_status&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__NNConv.html#ga02a296cb4f6361a70c3ecf1ef1238292">arm_depthwise_conv_u8_basic_ver1</a> (const uint8_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_ch, const uint8_t *kernel, const uint16_t kernel_x, const uint16_t kernel_y, const int16_t ch_mult, const int16_t pad_x, const int16_t pad_y, const int16_t stride_x, const int16_t stride_y, const int16_t dilation_x, const int16_t dilation_y, const int32_t *bias, const int32_t input_offset, const int32_t filter_offset, const int32_t output_offset, uint8_t *output, const uint16_t output_x, const uint16_t output_y, const int32_t output_activation_min, const int32_t output_activation_max, const int32_t out_shift, const int32_t out_mult)</td></tr>
  277. <tr class="memdesc:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="mdescLeft">&#160;</td><td class="mdescRight">uint8 depthwise convolution function with asymmetric quantization for even number of channel multiplier and input channels. Unless specified otherwise, arguments are mandatory. <a href="group__NNConv.html#ga02a296cb4f6361a70c3ecf1ef1238292">More...</a><br/></td></tr>
  278. <tr class="separator:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="memSeparator" colspan="2">&#160;</td></tr>
  279. <tr class="memitem:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Reshape.html#ga8cc1dfb7b2b083935a97dc4f24d0533c">arm_reshape_s8</a> (const int8_t *input, int8_t *output, const uint32_t total_size)</td></tr>
  280. <tr class="memdesc:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reshape a s8 vector into another with different shape. <a href="group__Reshape.html#ga8cc1dfb7b2b083935a97dc4f24d0533c">More...</a><br/></td></tr>
  281. <tr class="separator:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="memSeparator" colspan="2">&#160;</td></tr>
  282. <tr class="memitem:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Concatenation.html#gac06ac3c87cad1cfb14aa24b19124fcfd">arm_concatenation_s8_x</a> (const int8_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_z, const uint16_t input_w, int8_t *output, const uint16_t output_x, const uint32_t offset_x)</td></tr>
  283. <tr class="memdesc:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="mdescLeft">&#160;</td><td class="mdescRight">int8/uint8 concatenation function to be used for concatenating N-tensors along the X axis This function should be called for each input tensor to concatenate. The argument offset_x will be used to store the input tensor in the correct position in the output tensor <a href="group__Concatenation.html#gac06ac3c87cad1cfb14aa24b19124fcfd">More...</a><br/></td></tr>
  284. <tr class="separator:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
  285. <tr class="memitem:gaf0b76b039f66f34ec99503193a015ff6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Concatenation.html#gaf0b76b039f66f34ec99503193a015ff6">arm_concatenation_s8_y</a> (const int8_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_z, const uint16_t input_w, int8_t *output, const uint16_t output_y, const uint32_t offset_y)</td></tr>
  286. <tr class="memdesc:gaf0b76b039f66f34ec99503193a015ff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">int8/uint8 concatenation function to be used for concatenating N-tensors along the Y axis This function should be called for each input tensor to concatenate. The argument offset_y will be used to store the input tensor in the correct position in the output tensor <a href="group__Concatenation.html#gaf0b76b039f66f34ec99503193a015ff6">More...</a><br/></td></tr>
  287. <tr class="separator:gaf0b76b039f66f34ec99503193a015ff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
  288. <tr class="memitem:ga9ae180a44e18ee58936dba1e0564560b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Concatenation.html#ga9ae180a44e18ee58936dba1e0564560b">arm_concatenation_s8_z</a> (const int8_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_z, const uint16_t input_w, int8_t *output, const uint16_t output_z, const uint32_t offset_z)</td></tr>
  289. <tr class="memdesc:ga9ae180a44e18ee58936dba1e0564560b"><td class="mdescLeft">&#160;</td><td class="mdescRight">int8/uint8 concatenation function to be used for concatenating N-tensors along the Z axis This function should be called for each input tensor to concatenate. The argument offset_z will be used to store the input tensor in the correct position in the output tensor <a href="group__Concatenation.html#ga9ae180a44e18ee58936dba1e0564560b">More...</a><br/></td></tr>
  290. <tr class="separator:ga9ae180a44e18ee58936dba1e0564560b"><td class="memSeparator" colspan="2">&#160;</td></tr>
  291. <tr class="memitem:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__Concatenation.html#gaf2ec7d439726caa96e0b3dc989b34d64">arm_concatenation_s8_w</a> (const int8_t *input, const uint16_t input_x, const uint16_t input_y, const uint16_t input_z, const uint16_t input_w, int8_t *output, const uint32_t offset_w)</td></tr>
  292. <tr class="memdesc:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="mdescLeft">&#160;</td><td class="mdescRight">int8/uint8 concatenation function to be used for concatenating N-tensors along the W axis (Batch size) This function should be called for each input tensor to concatenate. The argument offset_w will be used to store the input tensor in the correct position in the output tensor <a href="group__Concatenation.html#gaf2ec7d439726caa96e0b3dc989b34d64">More...</a><br/></td></tr>
  293. <tr class="separator:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="memSeparator" colspan="2">&#160;</td></tr>
  294. </table>
  295. <h2 class="groupheader">Macro Definition Documentation</h2>
  296. <a class="anchor" id="a710b6e009261290c6151f329cf409530"></a>
  297. <div class="memitem">
  298. <div class="memproto">
  299. <table class="memname">
  300. <tr>
  301. <td class="memname">#define USE_INTRINSIC</td>
  302. </tr>
  303. </table>
  304. </div><div class="memdoc">
  305. </div>
  306. </div>
  307. <h2 class="groupheader">Function Documentation</h2>
  308. <a class="anchor" id="abc4fb258cfe8500ee68e812a293a80a3"></a>
  309. <div class="memitem">
  310. <div class="memproto">
  311. <table class="memname">
  312. <tr>
  313. <td class="memname">q7_t* arm_nn_mat_mult_kernel_q7_q15 </td>
  314. <td>(</td>
  315. <td class="paramtype">const q7_t *&#160;</td>
  316. <td class="paramname"><em>pA</em>, </td>
  317. </tr>
  318. <tr>
  319. <td class="paramkey"></td>
  320. <td></td>
  321. <td class="paramtype">const q15_t *&#160;</td>
  322. <td class="paramname"><em>pInBuffer</em>, </td>
  323. </tr>
  324. <tr>
  325. <td class="paramkey"></td>
  326. <td></td>
  327. <td class="paramtype">const uint16_t&#160;</td>
  328. <td class="paramname"><em>ch_im_out</em>, </td>
  329. </tr>
  330. <tr>
  331. <td class="paramkey"></td>
  332. <td></td>
  333. <td class="paramtype">const uint16_t&#160;</td>
  334. <td class="paramname"><em>numCol_A</em>, </td>
  335. </tr>
  336. <tr>
  337. <td class="paramkey"></td>
  338. <td></td>
  339. <td class="paramtype">const uint16_t&#160;</td>
  340. <td class="paramname"><em>bias_shift</em>, </td>
  341. </tr>
  342. <tr>
  343. <td class="paramkey"></td>
  344. <td></td>
  345. <td class="paramtype">const uint16_t&#160;</td>
  346. <td class="paramname"><em>out_shift</em>, </td>
  347. </tr>
  348. <tr>
  349. <td class="paramkey"></td>
  350. <td></td>
  351. <td class="paramtype">const q7_t *&#160;</td>
  352. <td class="paramname"><em>bias</em>, </td>
  353. </tr>
  354. <tr>
  355. <td class="paramkey"></td>
  356. <td></td>
  357. <td class="paramtype">q7_t *&#160;</td>
  358. <td class="paramname"><em>pOut</em>&#160;</td>
  359. </tr>
  360. <tr>
  361. <td></td>
  362. <td>)</td>
  363. <td></td><td></td>
  364. </tr>
  365. </table>
  366. </div><div class="memdoc">
  367. <p>These functions are used within convolution layer functions for matrix multiplication.</p>
  368. <p>The implementation is similar to CMSIS-DSP arm_mat_mult functions with one Q7 and one Q15 operands. The Q15 operand is the im2col output which is always with 2 columns. Matrix-multiplication function for convolution </p>
  369. <dl class="params"><dt>Parameters</dt><dd>
  370. <table class="params">
  371. <tr><td class="paramdir">[in]</td><td class="paramname">pA</td><td>pointer to operand A </td></tr>
  372. <tr><td class="paramdir">[in]</td><td class="paramname">pInBuffer</td><td>pointer to operand B, always conssists of 2 vectors </td></tr>
  373. <tr><td class="paramdir">[in]</td><td class="paramname">ch_im_out</td><td>numRow of A </td></tr>
  374. <tr><td class="paramdir">[in]</td><td class="paramname">numCol_A</td><td>numCol of A </td></tr>
  375. <tr><td class="paramdir">[in]</td><td class="paramname">bias_shift</td><td>amount of left-shift for bias </td></tr>
  376. <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>amount of right-shift for output </td></tr>
  377. <tr><td class="paramdir">[in]</td><td class="paramname">bias</td><td>the bias </td></tr>
  378. <tr><td class="paramdir">[in,out]</td><td class="paramname">pOut</td><td>pointer to output </td></tr>
  379. </table>
  380. </dd>
  381. </dl>
  382. <dl class="section return"><dt>Returns</dt><dd>The function returns the incremented output pointer</dd></dl>
  383. <p>Matrix-Multiplication Kernels for Convolution.</p>
  384. <p>Refer to header file for details. </p>
  385. <p>References <a class="el" href="arm__nnsupportfunctions_8h.html#afdda94a339b76615d3161e9fc63f4d21">arm_nn_read_q15x2_ia()</a>, and <a class="el" href="arm__nnsupportfunctions_8h.html#a4cbd428a2b4a4f6b2a6e4219520c7ce0">NN_ROUND</a>.</p>
  386. <p>Referenced by <a class="el" href="group__NNConv.html#ga210ae8d8fc1d12ee15b41f1fa6947681">arm_convolve_HWC_q7_basic()</a>, <a class="el" href="group__NNConv.html#ga4501fa22c0836002aa47ccc313dce252">arm_convolve_HWC_q7_basic_nonsquare()</a>, and <a class="el" href="group__NNConv.html#ga98f2ead67d7cbdf558b0cd8a3b8fc148">arm_convolve_HWC_q7_RGB()</a>.</p>
  387. </div>
  388. </div>
  389. <a class="anchor" id="aefe9c7ce9a65060a244b06dffe74c4b3"></a>
  390. <div class="memitem">
  391. <div class="memproto">
  392. <table class="memname">
  393. <tr>
  394. <td class="memname">q7_t* arm_nn_mat_mult_kernel_q7_q15_reordered </td>
  395. <td>(</td>
  396. <td class="paramtype">const q7_t *&#160;</td>
  397. <td class="paramname"><em>pA</em>, </td>
  398. </tr>
  399. <tr>
  400. <td class="paramkey"></td>
  401. <td></td>
  402. <td class="paramtype">const q15_t *&#160;</td>
  403. <td class="paramname"><em>pInBuffer</em>, </td>
  404. </tr>
  405. <tr>
  406. <td class="paramkey"></td>
  407. <td></td>
  408. <td class="paramtype">const uint16_t&#160;</td>
  409. <td class="paramname"><em>ch_im_out</em>, </td>
  410. </tr>
  411. <tr>
  412. <td class="paramkey"></td>
  413. <td></td>
  414. <td class="paramtype">const uint16_t&#160;</td>
  415. <td class="paramname"><em>numCol_A</em>, </td>
  416. </tr>
  417. <tr>
  418. <td class="paramkey"></td>
  419. <td></td>
  420. <td class="paramtype">const uint16_t&#160;</td>
  421. <td class="paramname"><em>bias_shift</em>, </td>
  422. </tr>
  423. <tr>
  424. <td class="paramkey"></td>
  425. <td></td>
  426. <td class="paramtype">const uint16_t&#160;</td>
  427. <td class="paramname"><em>out_shift</em>, </td>
  428. </tr>
  429. <tr>
  430. <td class="paramkey"></td>
  431. <td></td>
  432. <td class="paramtype">const q7_t *&#160;</td>
  433. <td class="paramname"><em>bias</em>, </td>
  434. </tr>
  435. <tr>
  436. <td class="paramkey"></td>
  437. <td></td>
  438. <td class="paramtype">q7_t *&#160;</td>
  439. <td class="paramname"><em>pOut</em>&#160;</td>
  440. </tr>
  441. <tr>
  442. <td></td>
  443. <td>)</td>
  444. <td></td><td></td>
  445. </tr>
  446. </table>
  447. </div><div class="memdoc">
  448. <dl class="params"><dt>Parameters</dt><dd>
  449. <table class="params">
  450. <tr><td class="paramdir">[in]</td><td class="paramname">pA</td><td>pointer to operand A </td></tr>
  451. <tr><td class="paramdir">[in]</td><td class="paramname">pInBuffer</td><td>pointer to operand B, always conssists of 2 vectors </td></tr>
  452. <tr><td class="paramdir">[in]</td><td class="paramname">ch_im_out</td><td>numRow of A </td></tr>
  453. <tr><td class="paramdir">[in]</td><td class="paramname">numCol_A</td><td>numCol of A </td></tr>
  454. <tr><td class="paramdir">[in]</td><td class="paramname">bias_shift</td><td>amount of left-shift for bias </td></tr>
  455. <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>amount of right-shift for output </td></tr>
  456. <tr><td class="paramdir">[in]</td><td class="paramname">bias</td><td>the bias </td></tr>
  457. <tr><td class="paramdir">[in,out]</td><td class="paramname">pOut</td><td>pointer to output </td></tr>
  458. </table>
  459. </dd>
  460. </dl>
  461. <dl class="section return"><dt>Returns</dt><dd>The function returns the incremented output pointer</dd></dl>
  462. <p>This function assumes that data in pInBuffer are reordered</p>
  463. <p>Matrix-multiplication function for convolution with reordered columns.</p>
  464. <p>Refer to header file for details. </p>
  465. <p>References <a class="el" href="arm__nnsupportfunctions_8h.html#afdda94a339b76615d3161e9fc63f4d21">arm_nn_read_q15x2_ia()</a>, and <a class="el" href="arm__nnsupportfunctions_8h.html#a4cbd428a2b4a4f6b2a6e4219520c7ce0">NN_ROUND</a>.</p>
  466. <p>Referenced by <a class="el" href="group__NNConv.html#ga110adcfdaab356c750c6270aa5e05f29">arm_convolve_1x1_HWC_q7_fast_nonsquare()</a>, <a class="el" href="group__NNConv.html#gae00d3c1285907d59657369fc98bcc83f">arm_convolve_HWC_q7_fast()</a>, and <a class="el" href="group__NNConv.html#gabc6d6b991024e9e5c5cdbd7489de88ef">arm_convolve_HWC_q7_fast_nonsquare()</a>.</p>
  467. </div>
  468. </div>
  469. <a class="anchor" id="a2da69a593037381cd149616f2fd57cce"></a>
  470. <div class="memitem">
  471. <div class="memproto">
  472. <table class="memname">
  473. <tr>
  474. <td class="memname">q7_t* arm_nn_mat_mult_kernel_s8_s16 </td>
  475. <td>(</td>
  476. <td class="paramtype">const q7_t *&#160;</td>
  477. <td class="paramname"><em>input_a</em>, </td>
  478. </tr>
  479. <tr>
  480. <td class="paramkey"></td>
  481. <td></td>
  482. <td class="paramtype">const q15_t *&#160;</td>
  483. <td class="paramname"><em>input_b</em>, </td>
  484. </tr>
  485. <tr>
  486. <td class="paramkey"></td>
  487. <td></td>
  488. <td class="paramtype">const uint16_t&#160;</td>
  489. <td class="paramname"><em>output_ch</em>, </td>
  490. </tr>
  491. <tr>
  492. <td class="paramkey"></td>
  493. <td></td>
  494. <td class="paramtype">const int32_t *&#160;</td>
  495. <td class="paramname"><em>out_shift</em>, </td>
  496. </tr>
  497. <tr>
  498. <td class="paramkey"></td>
  499. <td></td>
  500. <td class="paramtype">const int32_t *&#160;</td>
  501. <td class="paramname"><em>out_mult</em>, </td>
  502. </tr>
  503. <tr>
  504. <td class="paramkey"></td>
  505. <td></td>
  506. <td class="paramtype">const int32_t&#160;</td>
  507. <td class="paramname"><em>out_offset</em>, </td>
  508. </tr>
  509. <tr>
  510. <td class="paramkey"></td>
  511. <td></td>
  512. <td class="paramtype">const int16_t&#160;</td>
  513. <td class="paramname"><em>activation_min</em>, </td>
  514. </tr>
  515. <tr>
  516. <td class="paramkey"></td>
  517. <td></td>
  518. <td class="paramtype">const int16_t&#160;</td>
  519. <td class="paramname"><em>activation_max</em>, </td>
  520. </tr>
  521. <tr>
  522. <td class="paramkey"></td>
  523. <td></td>
  524. <td class="paramtype">const uint16_t&#160;</td>
  525. <td class="paramname"><em>num_col_a</em>, </td>
  526. </tr>
  527. <tr>
  528. <td class="paramkey"></td>
  529. <td></td>
  530. <td class="paramtype">const int32_t *const&#160;</td>
  531. <td class="paramname"><em>output_bias</em>, </td>
  532. </tr>
  533. <tr>
  534. <td class="paramkey"></td>
  535. <td></td>
  536. <td class="paramtype">q7_t *&#160;</td>
  537. <td class="paramname"><em>out_0</em>&#160;</td>
  538. </tr>
  539. <tr>
  540. <td></td>
  541. <td>)</td>
  542. <td></td><td></td>
  543. </tr>
  544. </table>
  545. </div><div class="memdoc">
  546. <dl class="params"><dt>Parameters</dt><dd>
  547. <table class="params">
  548. <tr><td class="paramdir">[in]</td><td class="paramname">input_a</td><td>pointer to operand A </td></tr>
  549. <tr><td class="paramdir">[in]</td><td class="paramname">input_b</td><td>pointer to operand B, always consists of 2 vectors. </td></tr>
  550. <tr><td class="paramdir">[in]</td><td class="paramname">output_ch</td><td>number of rows of A </td></tr>
  551. <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>pointer to per output channel requantization shift parameter. </td></tr>
  552. <tr><td class="paramdir">[in]</td><td class="paramname">out_mult</td><td>pointer to per output channel requantization multiplier parameter. </td></tr>
  553. <tr><td class="paramdir">[in]</td><td class="paramname">out_offset</td><td>output tensor offset. </td></tr>
  554. <tr><td class="paramdir">[in]</td><td class="paramname">activation_min</td><td>minimum value to clamp the output to. Range : int8 </td></tr>
  555. <tr><td class="paramdir">[in]</td><td class="paramname">activation_max</td><td>maximum value to clamp the output to. Range : int8 </td></tr>
  556. <tr><td class="paramdir">[in]</td><td class="paramname">num_col_a</td><td>number of columns of A </td></tr>
  557. <tr><td class="paramdir">[in]</td><td class="paramname">output_bias</td><td>per output channel bias. Range : int32 </td></tr>
  558. <tr><td class="paramdir">[in,out]</td><td class="paramname">out_0</td><td>pointer to output </td></tr>
  559. </table>
  560. </dd>
  561. </dl>
  562. <dl class="section return"><dt>Returns</dt><dd>The function returns one of the two<ol type="1">
  563. <li>The incremented output pointer for a successful operation or</li>
  564. <li>NULL if implementation is not available.</li>
  565. </ol>
  566. </dd></dl>
  567. <p>This function does the matrix multiplication of weight matrix for all output channels with 2 columns from im2col and produces two elements/output_channel. The outputs are clamped in the range provided by activation min and max. Supported framework: TensorFlow Lite micro. </p>
  568. <p>References <a class="el" href="arm__nnsupportfunctions_8h.html#afdda94a339b76615d3161e9fc63f4d21">arm_nn_read_q15x2_ia()</a>, <a class="el" href="arm__nnsupportfunctions_8h.html#a6a13b7a567485da5fc7f0d311318886d">arm_nn_requantize()</a>, <a class="el" href="arm__nnsupportfunctions_8h.html#ad935f1ff1a50822e317bdb321ce991ad">MAX</a>, and <a class="el" href="arm__nnsupportfunctions_8h.html#adcd021ac91d43a62b2cdecf9a5b971a7">MIN</a>.</p>
  569. <p>Referenced by <a class="el" href="group__NNConv.html#ga6a0b2161ece62078228ead2d85bbcf28">arm_convolve_s8()</a>.</p>
  570. </div>
  571. </div>
  572. <a class="anchor" id="a1bbc24203cf1766cf75fa27db48b5eb4"></a>
  573. <div class="memitem">
  574. <div class="memproto">
  575. <table class="memname">
  576. <tr>
  577. <td class="memname">q7_t* arm_nn_mat_mult_kernel_s8_s16_reordered </td>
  578. <td>(</td>
  579. <td class="paramtype">const q7_t *&#160;</td>
  580. <td class="paramname"><em>input_a</em>, </td>
  581. </tr>
  582. <tr>
  583. <td class="paramkey"></td>
  584. <td></td>
  585. <td class="paramtype">const q15_t *&#160;</td>
  586. <td class="paramname"><em>input_b</em>, </td>
  587. </tr>
  588. <tr>
  589. <td class="paramkey"></td>
  590. <td></td>
  591. <td class="paramtype">const uint16_t&#160;</td>
  592. <td class="paramname"><em>output_ch</em>, </td>
  593. </tr>
  594. <tr>
  595. <td class="paramkey"></td>
  596. <td></td>
  597. <td class="paramtype">const int32_t *&#160;</td>
  598. <td class="paramname"><em>out_shift</em>, </td>
  599. </tr>
  600. <tr>
  601. <td class="paramkey"></td>
  602. <td></td>
  603. <td class="paramtype">const int32_t *&#160;</td>
  604. <td class="paramname"><em>out_mult</em>, </td>
  605. </tr>
  606. <tr>
  607. <td class="paramkey"></td>
  608. <td></td>
  609. <td class="paramtype">const int32_t&#160;</td>
  610. <td class="paramname"><em>out_offset</em>, </td>
  611. </tr>
  612. <tr>
  613. <td class="paramkey"></td>
  614. <td></td>
  615. <td class="paramtype">const int16_t&#160;</td>
  616. <td class="paramname"><em>activation_min</em>, </td>
  617. </tr>
  618. <tr>
  619. <td class="paramkey"></td>
  620. <td></td>
  621. <td class="paramtype">const int16_t&#160;</td>
  622. <td class="paramname"><em>activation_max</em>, </td>
  623. </tr>
  624. <tr>
  625. <td class="paramkey"></td>
  626. <td></td>
  627. <td class="paramtype">const uint16_t&#160;</td>
  628. <td class="paramname"><em>num_col_a</em>, </td>
  629. </tr>
  630. <tr>
  631. <td class="paramkey"></td>
  632. <td></td>
  633. <td class="paramtype">const int32_t *const&#160;</td>
  634. <td class="paramname"><em>output_bias</em>, </td>
  635. </tr>
  636. <tr>
  637. <td class="paramkey"></td>
  638. <td></td>
  639. <td class="paramtype">q7_t *&#160;</td>
  640. <td class="paramname"><em>out_0</em>&#160;</td>
  641. </tr>
  642. <tr>
  643. <td></td>
  644. <td>)</td>
  645. <td></td><td></td>
  646. </tr>
  647. </table>
  648. </div><div class="memdoc">
  649. <p>For arguments, refer arm_nn_mat_mult_kernel_s8_s16. The re-ordering is a consequence of sign extension done by the SXTB16 command on input_b. The outputs are clamped in the range provided by activation min and max.</p>
  650. <ul>
  651. <li></li>
  652. <li>Supported framework : TensorFlow Lite Micro</li>
  653. <li>The following constrains on the arguments apply<ol type="1">
  654. <li>num_col_a is a multiple of 4</li>
  655. <li>output_ch is a multiple of 2 </li>
  656. </ol>
  657. </li>
  658. </ul>
  659. <p>References <a class="el" href="arm__nnsupportfunctions_8h.html#afdda94a339b76615d3161e9fc63f4d21">arm_nn_read_q15x2_ia()</a>, <a class="el" href="arm__nnsupportfunctions_8h.html#a6a13b7a567485da5fc7f0d311318886d">arm_nn_requantize()</a>, <a class="el" href="arm__nnsupportfunctions_8h.html#ad935f1ff1a50822e317bdb321ce991ad">MAX</a>, and <a class="el" href="arm__nnsupportfunctions_8h.html#adcd021ac91d43a62b2cdecf9a5b971a7">MIN</a>.</p>
  660. </div>
  661. </div>
  662. </div><!-- contents -->
  663. </div><!-- doc-content -->
  664. <!-- start footer part -->
  665. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  666. <ul>
  667. <li class="navelem"><a class="el" href="dir_06560e3359c5da94845158f0031c08e8.html">NN</a></li><li class="navelem"><a class="el" href="dir_17aeddf785065efc95337b880bac512b.html">Include</a></li><li class="navelem"><a class="el" href="arm__nnfunctions_8h.html">arm_nnfunctions.h</a></li>
  668. <li class="footer">Generated on Thu Apr 9 2020 15:49:34 for CMSIS-NN Version 1.3.0 by Arm Ltd. All rights reserved.
  669. <!--
  670. <a href="http://www.doxygen.org/index.html">
  671. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
  672. -->
  673. </li>
  674. </ul>
  675. </div>
  676. </body>
  677. </html>