diff --git a/latest/supportlibrary.html b/latest/supportlibrary.html
new file mode 100644
index 0000000..6dc27f6
--- /dev/null
+++ b/latest/supportlibrary.html
@@ -0,0 +1,201 @@
+<!-- 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">23.08</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>
+<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 Tue Aug 22 2023 11:37:04 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>
