<!-- HTML header for doxygen 1.8.17-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Arm NN: NNAPI Support Library</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/>
  <td id="projectalign" style="padding-left: 0.9em;">
   <div id="projectname">
   &#160;<span id="projectnumber">24.05</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('supportlibrary.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">NNAPI Support Library </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="supportlibraryintro"></a>
About the NNAPI Support Library</h1>
<h2>Note: Arm NN will be dropping support for NNAPI Support Library in 24.08.</h2>
<p>If you need help building the Arm NN NNAPI Support Library, please take a look at our <a class="el" href="md_shim__build_guide_shim_support_library.html">build guide</a>.</p>
<h1><a class="anchor" id="sloptions"></a>
Support Library Options</h1>
<p>The general list of runtime options are described in <a class="el" href="runtimeoptions.html#runtimeoptions">Runtime options</a></p>
<h1><a class="anchor" id="slfullysupported"></a>
Supported Operators</h1>
<p>The NNAPI Support Library currently supports the following operators:</p>
<ul>
<li>ABS</li>
<li>ADD</li>
<li>ARGMAX</li>
<li>ARGMIN</li>
<li>AVERAGE_POOL_2D</li>
<li>BATCH_MATMUL</li>
<li>BATCH_TO_SPACE_ND</li>
<li>CAST</li>
<li>CONCATENATION</li>
<li>CONV_2D</li>
<li>DEPTH_TO_SPACE</li>
<li>DEPTHWISE_CONV_2D</li>
<li>DEQUANTIZE</li>
<li>DIV</li>
<li>ELU</li>
<li>EQUAL</li>
<li>EXP</li>
<li>EXPAND_DIMS</li>
<li>FILL</li>
<li>FLOOR</li>
<li>FULLY_CONNECTED</li>
<li>GATHER</li>
<li>GREATER</li>
<li>GREATER_EQUAL</li>
<li>GROUPED_CONV_2D</li>
<li>HARD_SWISH</li>
<li>INSTANCE_NORMALIZATION</li>
<li>L2_NORMALIZATION</li>
<li>L2_POOL_2D</li>
<li>LESS</li>
<li>LESS_EQUAL</li>
<li>LOCAL_RESPONSE_NORMALIZATION</li>
<li>LOG</li>
<li>LOGICAL_AND</li>
<li>LOGICAL_NOT</li>
<li>LOGICAL_OR</li>
<li>LOGISTIC</li>
<li>LOG_SOFTMAX</li>
<li>LSTM</li>
<li>MAX_POOL_2D</li>
<li>MAXIMUM</li>
<li>MEAN</li>
<li>MINIMUM</li>
<li>MUL</li>
<li>NEG</li>
<li>NOT_EQUAL</li>
<li>PAD</li>
<li>PADV2</li>
<li>PRELU</li>
<li>POW</li>
<li>QUANTIZE</li>
<li>QUANTIZED_LSTM</li>
<li>QUANTIZED_16BIT_LSTM</li>
<li>RANK</li>
<li>REDUCE_MAX</li>
<li>REDUCE_MIN</li>
<li>REDUCE_PROD</li>
<li>REDUCE_SUM</li>
<li>RELU</li>
<li>RELU1</li>
<li>RELU6</li>
<li>RESHAPE</li>
<li>RESIZE_BILINEAR</li>
<li>RESIZE_NEAREST_NEIGHBOR</li>
<li>REVERSE</li>
<li>RSQRT</li>
<li>SIN</li>
<li>SOFTMAX</li>
<li>SPACE_TO_BATCH_ND</li>
<li>SPACE_TO_DEPTH</li>
<li>SQRT</li>
<li>SQUEEZE</li>
<li>STRIDED_SLICE</li>
<li>SUB</li>
<li>TILE</li>
<li>TRANSPOSE</li>
<li>TRANSPOSE_CONV_2D</li>
<li>TANH </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</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="swtools.html">Software Components</a></li>
    <li class="footer">Generated on Thu May 16 2024 09:31:54 for Arm NN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
