| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691 |
- <!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"/>
- <title>arm_nnfunctions.h File Reference</title>
- <title>CMSIS-NN: arm_nnfunctions.h File Reference</title>
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
- <link href="cmsis.css" rel="stylesheet" type="text/css" />
- <script type="text/javascript" src="jquery.js"></script>
- <script type="text/javascript" src="dynsections.js"></script>
- <script type="text/javascript" src="printComponentTabs.js"></script>
- <link href="navtree.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="resize.js"></script>
- <script type="text/javascript" src="navtree.js"></script>
- <script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
- </script>
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
- <script type="text/javascript" src="search/search.js"></script>
- <script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
- </script>
- </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: 46px;">
- <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
- <td style="padding-left: 0.5em;">
- <div id="projectname">CMSIS-NN
-  <span id="projectnumber">Version 1.3.0</span>
- </div>
- <div id="projectbrief">CMSIS NN Software Library</div>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- end header part -->
- <div id="CMSISnav" class="tabs1">
- <ul class="tablist">
- <script type="text/javascript">
- <!--
- writeComponentTabs.call(this);
- //-->
- </script>
- </ul>
- </div>
- <!-- Generated by Doxygen 1.8.6 -->
- <script type="text/javascript">
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
- </script>
- <div id="navrow1" class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="pages.html"><span>Usage and Description</span></a></li>
- <li><a href="modules.html"><span>Reference</span></a></li>
- <li>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="Search" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
- </li>
- </ul>
- </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('arm__nnfunctions_8h.html','');});
- </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)">
- <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Pages</a></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="#define-members">Macros</a> |
- <a href="#func-members">Functions</a> </div>
- <div class="headertitle">
- <div class="title">arm_nnfunctions.h File Reference</div> </div>
- </div><!--header-->
- <div class="contents">
- <table class="memberdecls">
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
- Macros</h2></td></tr>
- <tr class="memitem:a710b6e009261290c6151f329cf409530"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="arm__nnfunctions_8h.html#a710b6e009261290c6151f329cf409530">USE_INTRINSIC</a></td></tr>
- <tr class="separator:a710b6e009261290c6151f329cf409530"><td class="memSeparator" colspan="2"> </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:ga6a0b2161ece62078228ead2d85bbcf28"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga6a0b2161ece62078228ead2d85bbcf28"><td class="mdescLeft"> </td><td class="mdescRight">Basic s8 convolution function. <a href="group__NNConv.html#ga6a0b2161ece62078228ead2d85bbcf28">More...</a><br/></td></tr>
- <tr class="separator:ga6a0b2161ece62078228ead2d85bbcf28"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaaf83450fd2d89432d9759df99b05737b"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:gaaf83450fd2d89432d9759df99b05737b"><td class="mdescLeft"> </td><td class="mdescRight">Get the required buffer size for s8 convolution function. <a href="group__NNConv.html#gaaf83450fd2d89432d9759df99b05737b">More...</a><br/></td></tr>
- <tr class="separator:gaaf83450fd2d89432d9759df99b05737b"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="mdescLeft"> </td><td class="mdescRight">Basic Q7 convolution function. <a href="group__NNConv.html#ga210ae8d8fc1d12ee15b41f1fa6947681">More...</a><br/></td></tr>
- <tr class="separator:ga210ae8d8fc1d12ee15b41f1fa6947681"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga4501fa22c0836002aa47ccc313dce252"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga4501fa22c0836002aa47ccc313dce252"><td class="mdescLeft"> </td><td class="mdescRight">Basic Q7 convolution function (non-square shape) <a href="group__NNConv.html#ga4501fa22c0836002aa47ccc313dce252">More...</a><br/></td></tr>
- <tr class="separator:ga4501fa22c0836002aa47ccc313dce252"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga55701f213b198084b52eab53097f1f58"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga55701f213b198084b52eab53097f1f58"><td class="mdescLeft"> </td><td class="mdescRight">Basic Q15 convolution function. <a href="group__NNConv.html#ga55701f213b198084b52eab53097f1f58">More...</a><br/></td></tr>
- <tr class="separator:ga55701f213b198084b52eab53097f1f58"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gae00d3c1285907d59657369fc98bcc83f"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gae00d3c1285907d59657369fc98bcc83f"><td class="mdescLeft"> </td><td class="mdescRight">Fast Q7 convolution function. <a href="group__NNConv.html#gae00d3c1285907d59657369fc98bcc83f">More...</a><br/></td></tr>
- <tr class="separator:gae00d3c1285907d59657369fc98bcc83f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="mdescLeft"> </td><td class="mdescRight">Fast Q7 convolution function (non-sqaure shape) <a href="group__NNConv.html#gabc6d6b991024e9e5c5cdbd7489de88ef">More...</a><br/></td></tr>
- <tr class="separator:gabc6d6b991024e9e5c5cdbd7489de88ef"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga110adcfdaab356c750c6270aa5e05f29"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga110adcfdaab356c750c6270aa5e05f29"><td class="mdescLeft"> </td><td class="mdescRight">Fast Q7 version of 1x1 convolution (non-sqaure shape) <a href="group__NNConv.html#ga110adcfdaab356c750c6270aa5e05f29">More...</a><br/></td></tr>
- <tr class="separator:ga110adcfdaab356c750c6270aa5e05f29"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gadfcad0bae34328dc806dc88cde173faa"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gadfcad0bae34328dc806dc88cde173faa"><td class="mdescLeft"> </td><td class="mdescRight">Fast s8 version for 1x1 convolution (non-square shape) <a href="group__NNConv.html#gadfcad0bae34328dc806dc88cde173faa">More...</a><br/></td></tr>
- <tr class="separator:gadfcad0bae34328dc806dc88cde173faa"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="mdescLeft"> </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>
- <tr class="separator:ga09ed5df0234c7eb334a7264dd9e4c833"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga2d9c129189832572cf0bc97ff9e73e54"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga2d9c129189832572cf0bc97ff9e73e54"><td class="mdescLeft"> </td><td class="mdescRight">1xn convolution <a href="group__NNConv.html#ga2d9c129189832572cf0bc97ff9e73e54">More...</a><br/></td></tr>
- <tr class="separator:ga2d9c129189832572cf0bc97ff9e73e54"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gab34cb94c592df768774d8bcac03d7e5c"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:gab34cb94c592df768774d8bcac03d7e5c"><td class="mdescLeft"> </td><td class="mdescRight">Get the required additional buffer size for 1xn convolution. <a href="group__NNConv.html#gab34cb94c592df768774d8bcac03d7e5c">More...</a><br/></td></tr>
- <tr class="separator:gab34cb94c592df768774d8bcac03d7e5c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="mdescLeft"> </td><td class="mdescRight">Q7 version of convolution for RGB image. <a href="group__NNConv.html#ga98f2ead67d7cbdf558b0cd8a3b8fc148">More...</a><br/></td></tr>
- <tr class="separator:ga98f2ead67d7cbdf558b0cd8a3b8fc148"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="mdescLeft"> </td><td class="mdescRight">Fast Q15 convolution function. <a href="group__NNConv.html#ga4efb1ccbbaa7dd936961989dcb443f50">More...</a><br/></td></tr>
- <tr class="separator:ga4efb1ccbbaa7dd936961989dcb443f50"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="mdescLeft"> </td><td class="mdescRight">Fast Q15 convolution function (non-sqaure shape) <a href="group__NNConv.html#ga614ec3b71eb96e29952ec3f09e7b9c3c">More...</a><br/></td></tr>
- <tr class="separator:ga614ec3b71eb96e29952ec3f09e7b9c3c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="mdescLeft"> </td><td class="mdescRight">Q7 depthwise separable convolution function. <a href="group__NNConv.html#gad3d21b3bc6dbd6f3b97d01104349cb0a">More...</a><br/></td></tr>
- <tr class="separator:gad3d21b3bc6dbd6f3b97d01104349cb0a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga32ac508c5467813a84f74f96655dc697"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga32ac508c5467813a84f74f96655dc697"><td class="mdescLeft"> </td><td class="mdescRight">Q7 depthwise separable convolution function (non-square shape) <a href="group__NNConv.html#ga32ac508c5467813a84f74f96655dc697">More...</a><br/></td></tr>
- <tr class="separator:ga32ac508c5467813a84f74f96655dc697"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="mdescLeft"> </td><td class="mdescRight">Basic s8 depthwise convolution function. <a href="group__NNConv.html#gae7e0c94c970bfd59d9c5e2331ce84fe7">More...</a><br/></td></tr>
- <tr class="separator:gae7e0c94c970bfd59d9c5e2331ce84fe7"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gae86b03224e6edf28f54247594b6c8bf9"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gae86b03224e6edf28f54247594b6c8bf9"><td class="mdescLeft"> </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>
- <tr class="separator:gae86b03224e6edf28f54247594b6c8bf9"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="mdescLeft"> </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>
- <tr class="separator:ga3acc8b0cd5bd5d975fdf5a615261f0b1"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="mdescLeft"> </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>
- <tr class="separator:gaa53d31632c765b9b4bbd490d0ae3c0c1"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="mdescLeft"> </td><td class="mdescRight">Q7 basic fully-connected layer function. <a href="group__FC.html#ga8b7e0c2e989e8c75f0dc789f3115323d">More...</a><br/></td></tr>
- <tr class="separator:ga8b7e0c2e989e8c75f0dc789f3115323d"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="mdescLeft"> </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>
- <tr class="separator:ga2e580c510d9dc26a2e8e422f805b9bc0"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gafaf11325831bf8d8a915a88f53689263"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:gafaf11325831bf8d8a915a88f53689263"><td class="mdescLeft"> </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>
- <tr class="separator:gafaf11325831bf8d8a915a88f53689263"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="mdescLeft"> </td><td class="mdescRight">Q7 opt fully-connected layer function. <a href="group__FC.html#gaf82b71ef472a38f8fc9ac414d9d07e67">More...</a><br/></td></tr>
- <tr class="separator:gaf82b71ef472a38f8fc9ac414d9d07e67"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaac666c212b209e636c2369dd5c75d0dc"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gaac666c212b209e636c2369dd5c75d0dc"><td class="mdescLeft"> </td><td class="mdescRight">Q15 basic fully-connected layer function. <a href="group__FC.html#gaac666c212b209e636c2369dd5c75d0dc">More...</a><br/></td></tr>
- <tr class="separator:gaac666c212b209e636c2369dd5c75d0dc"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga062912078da113f5dd2004fd919a0ff2"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga062912078da113f5dd2004fd919a0ff2"><td class="mdescLeft"> </td><td class="mdescRight">Q15 opt fully-connected layer function. <a href="group__FC.html#ga062912078da113f5dd2004fd919a0ff2">More...</a><br/></td></tr>
- <tr class="separator:ga062912078da113f5dd2004fd919a0ff2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga4a1521e7532a1e62d71f3b12762016e2"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga4a1521e7532a1e62d71f3b12762016e2"><td class="mdescLeft"> </td><td class="mdescRight">Mixed Q15-Q7 fully-connected layer function. <a href="group__FC.html#ga4a1521e7532a1e62d71f3b12762016e2">More...</a><br/></td></tr>
- <tr class="separator:ga4a1521e7532a1e62d71f3b12762016e2"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gae3857bb6375692e81dde8cbd70adec08"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gae3857bb6375692e81dde8cbd70adec08"><td class="mdescLeft"> </td><td class="mdescRight">Mixed Q15-Q7 opt fully-connected layer function. <a href="group__FC.html#gae3857bb6375692e81dde8cbd70adec08">More...</a><br/></td></tr>
- <tr class="separator:gae3857bb6375692e81dde8cbd70adec08"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:abc4fb258cfe8500ee68e812a293a80a3"><td class="memItemLeft" align="right" valign="top">q7_t * </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>
- <tr class="memdesc:abc4fb258cfe8500ee68e812a293a80a3"><td class="mdescLeft"> </td><td class="mdescRight">Matrix-Multiplication Kernels for Convolution. <a href="#abc4fb258cfe8500ee68e812a293a80a3">More...</a><br/></td></tr>
- <tr class="separator:abc4fb258cfe8500ee68e812a293a80a3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a2da69a593037381cd149616f2fd57cce"><td class="memItemLeft" align="right" valign="top">q7_t * </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>
- <tr class="memdesc:a2da69a593037381cd149616f2fd57cce"><td class="mdescLeft"> </td><td class="mdescRight">Matrix-multiplication function for convolution with per-channel requantization. <a href="#a2da69a593037381cd149616f2fd57cce">More...</a><br/></td></tr>
- <tr class="separator:a2da69a593037381cd149616f2fd57cce"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="memItemLeft" align="right" valign="top">q7_t * </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>
- <tr class="memdesc:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="mdescLeft"> </td><td class="mdescRight">Matrix-multiplication of re-ordered input B with A. <a href="#a1bbc24203cf1766cf75fa27db48b5eb4">More...</a><br/></td></tr>
- <tr class="separator:a1bbc24203cf1766cf75fa27db48b5eb4"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="memItemLeft" align="right" valign="top">q7_t * </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>
- <tr class="memdesc:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="mdescLeft"> </td><td class="mdescRight">Matrix-multiplication function for convolution with reordered columns. <a href="#aefe9c7ce9a65060a244b06dffe74c4b3">More...</a><br/></td></tr>
- <tr class="separator:aefe9c7ce9a65060a244b06dffe74c4b3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gabc9644ba533138059baa8b582734698c"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gabc9644ba533138059baa8b582734698c"><td class="mdescLeft"> </td><td class="mdescRight">s8 element wise add of two vectors <a href="group__BasicMath.html#gabc9644ba533138059baa8b582734698c">More...</a><br/></td></tr>
- <tr class="separator:gabc9644ba533138059baa8b582734698c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga64125471aeb41aef308e5e729f52da1f"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga64125471aeb41aef308e5e729f52da1f"><td class="mdescLeft"> </td><td class="mdescRight">s8 element wise multiplication <a href="group__BasicMath.html#ga64125471aeb41aef308e5e729f52da1f">More...</a><br/></td></tr>
- <tr class="separator:ga64125471aeb41aef308e5e729f52da1f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga638e803b4fe00426f401783a6255ca30"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga638e803b4fe00426f401783a6255ca30"><td class="mdescLeft"> </td><td class="mdescRight">Q7 RELU function. <a href="group__Acti.html#ga638e803b4fe00426f401783a6255ca30">More...</a><br/></td></tr>
- <tr class="separator:ga638e803b4fe00426f401783a6255ca30"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="mdescLeft"> </td><td class="mdescRight">s8 ReLU6 function <a href="group__Acti.html#ga01a7a7c17f0cd544e29c4752daeecdc3">More...</a><br/></td></tr>
- <tr class="separator:ga01a7a7c17f0cd544e29c4752daeecdc3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="mdescLeft"> </td><td class="mdescRight">Q15 RELU function. <a href="group__Acti.html#ga53bcc00e54b802919bb3c89c143ee5ba">More...</a><br/></td></tr>
- <tr class="separator:ga53bcc00e54b802919bb3c89c143ee5ba"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga79f11131ae6767d60e03b1f6506b1af8"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga79f11131ae6767d60e03b1f6506b1af8"><td class="mdescLeft"> </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>
- <tr class="separator:ga79f11131ae6767d60e03b1f6506b1af8"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="mdescLeft"> </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>
- <tr class="separator:ga8932b57c8d0ee757511af2d40dcc11e7"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="mdescLeft"> </td><td class="mdescRight">Q7 max pooling function. <a href="group__Pooling.html#ga99afcdcc61eaf429ab3ee823702e44ce">More...</a><br/></td></tr>
- <tr class="separator:ga99afcdcc61eaf429ab3ee823702e44ce"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="mdescLeft"> </td><td class="mdescRight">Q7 average pooling function. <a href="group__Pooling.html#gae4a7b07f97ec4313524c9fb9fbcb1f6a">More...</a><br/></td></tr>
- <tr class="separator:gae4a7b07f97ec4313524c9fb9fbcb1f6a"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaeda2a7c2689d698398fb85278b7d940b"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:gaeda2a7c2689d698398fb85278b7d940b"><td class="mdescLeft"> </td><td class="mdescRight">s8 average pooling function <a href="group__Pooling.html#gaeda2a7c2689d698398fb85278b7d940b">More...</a><br/></td></tr>
- <tr class="separator:gaeda2a7c2689d698398fb85278b7d940b"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="memItemLeft" align="right" valign="top">int32_t </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>
- <tr class="memdesc:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="mdescLeft"> </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>
- <tr class="separator:gaca9a9dfa088bec0c4ac16f14518cf6a3"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga692bad3854c43c5b95c48de461ea9100"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga692bad3854c43c5b95c48de461ea9100"><td class="mdescLeft"> </td><td class="mdescRight">s8 DSP optimized max pooling function <a href="group__Pooling.html#ga692bad3854c43c5b95c48de461ea9100">More...</a><br/></td></tr>
- <tr class="separator:ga692bad3854c43c5b95c48de461ea9100"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga9ba8703e0f24059167f445c978026764"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga9ba8703e0f24059167f445c978026764"><td class="mdescLeft"> </td><td class="mdescRight">s8 pure C max pooling function <a href="group__Pooling.html#ga9ba8703e0f24059167f445c978026764">More...</a><br/></td></tr>
- <tr class="separator:ga9ba8703e0f24059167f445c978026764"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="mdescLeft"> </td><td class="mdescRight">Q7 softmax function. <a href="group__Softmax.html#ga89aff212a97a3cf32d9d7ddf11a8f43e">More...</a><br/></td></tr>
- <tr class="separator:ga89aff212a97a3cf32d9d7ddf11a8f43e"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga894cfd80c260b946702755b5754e520f"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga894cfd80c260b946702755b5754e520f"><td class="mdescLeft"> </td><td class="mdescRight">Q7 softmax function with batch parameter. <a href="group__Softmax.html#ga894cfd80c260b946702755b5754e520f">More...</a><br/></td></tr>
- <tr class="separator:ga894cfd80c260b946702755b5754e520f"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga1cacd8b84b8363079311987d0016ebe5"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga1cacd8b84b8363079311987d0016ebe5"><td class="mdescLeft"> </td><td class="mdescRight">Q15 softmax function. <a href="group__Softmax.html#ga1cacd8b84b8363079311987d0016ebe5">More...</a><br/></td></tr>
- <tr class="separator:ga1cacd8b84b8363079311987d0016ebe5"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaf309cdd53978a85a39c9bfdc476aea17"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gaf309cdd53978a85a39c9bfdc476aea17"><td class="mdescLeft"> </td><td class="mdescRight">S8 softmax function. <a href="group__Softmax.html#gaf309cdd53978a85a39c9bfdc476aea17">More...</a><br/></td></tr>
- <tr class="separator:gaf309cdd53978a85a39c9bfdc476aea17"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaa1627ed96bd597a8046d00689f077dce"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gaa1627ed96bd597a8046d00689f077dce"><td class="mdescLeft"> </td><td class="mdescRight">U8 softmax function. <a href="group__Softmax.html#gaa1627ed96bd597a8046d00689f077dce">More...</a><br/></td></tr>
- <tr class="separator:gaa1627ed96bd597a8046d00689f077dce"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="memItemLeft" align="right" valign="top">arm_status </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>
- <tr class="memdesc:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="mdescLeft"> </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>
- <tr class="separator:ga02a296cb4f6361a70c3ecf1ef1238292"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="mdescLeft"> </td><td class="mdescRight">Reshape a s8 vector into another with different shape. <a href="group__Reshape.html#ga8cc1dfb7b2b083935a97dc4f24d0533c">More...</a><br/></td></tr>
- <tr class="separator:ga8cc1dfb7b2b083935a97dc4f24d0533c"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="mdescLeft"> </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>
- <tr class="separator:gac06ac3c87cad1cfb14aa24b19124fcfd"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaf0b76b039f66f34ec99503193a015ff6"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gaf0b76b039f66f34ec99503193a015ff6"><td class="mdescLeft"> </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>
- <tr class="separator:gaf0b76b039f66f34ec99503193a015ff6"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:ga9ae180a44e18ee58936dba1e0564560b"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:ga9ae180a44e18ee58936dba1e0564560b"><td class="mdescLeft"> </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>
- <tr class="separator:ga9ae180a44e18ee58936dba1e0564560b"><td class="memSeparator" colspan="2"> </td></tr>
- <tr class="memitem:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="memItemLeft" align="right" valign="top">void </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>
- <tr class="memdesc:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="mdescLeft"> </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>
- <tr class="separator:gaf2ec7d439726caa96e0b3dc989b34d64"><td class="memSeparator" colspan="2"> </td></tr>
- </table>
- <h2 class="groupheader">Macro Definition Documentation</h2>
- <a class="anchor" id="a710b6e009261290c6151f329cf409530"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define USE_INTRINSIC</td>
- </tr>
- </table>
- </div><div class="memdoc">
- </div>
- </div>
- <h2 class="groupheader">Function Documentation</h2>
- <a class="anchor" id="abc4fb258cfe8500ee68e812a293a80a3"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">q7_t* arm_nn_mat_mult_kernel_q7_q15 </td>
- <td>(</td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>pA</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q15_t * </td>
- <td class="paramname"><em>pInBuffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>ch_im_out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>numCol_A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>bias_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>out_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>bias</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">q7_t * </td>
- <td class="paramname"><em>pOut</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <p>These functions are used within convolution layer functions for matrix multiplication.</p>
- <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>
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">pA</td><td>pointer to operand A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">pInBuffer</td><td>pointer to operand B, always conssists of 2 vectors </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">ch_im_out</td><td>numRow of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">numCol_A</td><td>numCol of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">bias_shift</td><td>amount of left-shift for bias </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>amount of right-shift for output </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">bias</td><td>the bias </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">pOut</td><td>pointer to output </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>The function returns the incremented output pointer</dd></dl>
- <p>Matrix-Multiplication Kernels for Convolution.</p>
- <p>Refer to header file for details. </p>
- <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>
- <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>
- </div>
- </div>
- <a class="anchor" id="aefe9c7ce9a65060a244b06dffe74c4b3"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">q7_t* arm_nn_mat_mult_kernel_q7_q15_reordered </td>
- <td>(</td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>pA</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q15_t * </td>
- <td class="paramname"><em>pInBuffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>ch_im_out</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>numCol_A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>bias_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>out_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>bias</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">q7_t * </td>
- <td class="paramname"><em>pOut</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">pA</td><td>pointer to operand A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">pInBuffer</td><td>pointer to operand B, always conssists of 2 vectors </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">ch_im_out</td><td>numRow of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">numCol_A</td><td>numCol of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">bias_shift</td><td>amount of left-shift for bias </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>amount of right-shift for output </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">bias</td><td>the bias </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">pOut</td><td>pointer to output </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>The function returns the incremented output pointer</dd></dl>
- <p>This function assumes that data in pInBuffer are reordered</p>
- <p>Matrix-multiplication function for convolution with reordered columns.</p>
- <p>Refer to header file for details. </p>
- <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>
- <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>
- </div>
- </div>
- <a class="anchor" id="a2da69a593037381cd149616f2fd57cce"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">q7_t* arm_nn_mat_mult_kernel_s8_s16 </td>
- <td>(</td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>input_a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q15_t * </td>
- <td class="paramname"><em>input_b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>output_ch</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t * </td>
- <td class="paramname"><em>out_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t * </td>
- <td class="paramname"><em>out_mult</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t </td>
- <td class="paramname"><em>out_offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int16_t </td>
- <td class="paramname"><em>activation_min</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int16_t </td>
- <td class="paramname"><em>activation_max</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>num_col_a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t *const </td>
- <td class="paramname"><em>output_bias</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">q7_t * </td>
- <td class="paramname"><em>out_0</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">input_a</td><td>pointer to operand A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">input_b</td><td>pointer to operand B, always consists of 2 vectors. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">output_ch</td><td>number of rows of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">out_shift</td><td>pointer to per output channel requantization shift parameter. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">out_mult</td><td>pointer to per output channel requantization multiplier parameter. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">out_offset</td><td>output tensor offset. </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">activation_min</td><td>minimum value to clamp the output to. Range : int8 </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">activation_max</td><td>maximum value to clamp the output to. Range : int8 </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">num_col_a</td><td>number of columns of A </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">output_bias</td><td>per output channel bias. Range : int32 </td></tr>
- <tr><td class="paramdir">[in,out]</td><td class="paramname">out_0</td><td>pointer to output </td></tr>
- </table>
- </dd>
- </dl>
- <dl class="section return"><dt>Returns</dt><dd>The function returns one of the two<ol type="1">
- <li>The incremented output pointer for a successful operation or</li>
- <li>NULL if implementation is not available.</li>
- </ol>
- </dd></dl>
- <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>
- <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>
- <p>Referenced by <a class="el" href="group__NNConv.html#ga6a0b2161ece62078228ead2d85bbcf28">arm_convolve_s8()</a>.</p>
- </div>
- </div>
- <a class="anchor" id="a1bbc24203cf1766cf75fa27db48b5eb4"></a>
- <div class="memitem">
- <div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">q7_t* arm_nn_mat_mult_kernel_s8_s16_reordered </td>
- <td>(</td>
- <td class="paramtype">const q7_t * </td>
- <td class="paramname"><em>input_a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const q15_t * </td>
- <td class="paramname"><em>input_b</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>output_ch</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t * </td>
- <td class="paramname"><em>out_shift</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t * </td>
- <td class="paramname"><em>out_mult</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t </td>
- <td class="paramname"><em>out_offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int16_t </td>
- <td class="paramname"><em>activation_min</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int16_t </td>
- <td class="paramname"><em>activation_max</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const uint16_t </td>
- <td class="paramname"><em>num_col_a</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int32_t *const </td>
- <td class="paramname"><em>output_bias</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">q7_t * </td>
- <td class="paramname"><em>out_0</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </div><div class="memdoc">
- <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>
- <ul>
- <li></li>
- <li>Supported framework : TensorFlow Lite Micro</li>
- <li>The following constrains on the arguments apply<ol type="1">
- <li>num_col_a is a multiple of 4</li>
- <li>output_ch is a multiple of 2 </li>
- </ol>
- </li>
- </ul>
- <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>
- </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="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>
- <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.
- <!--
- <a href="http://www.doxygen.org/index.html">
- <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6
- -->
- </li>
- </ul>
- </div>
- </body>
- </html>
|