<!-- HTML header for doxygen 1.8.15-->
<!-- Remember to use version doxygen 1.8.15 +-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
<title>Compute Library: Globals</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</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="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">19.08</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<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('globals_func_r.xhtml','');});
/* @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="contents">
&#160;

<h3><a id="index_r"></a>- r -</h3><ul>
<li>read_texels4()
: <a class="el" href="warp__helpers_8h.xhtml#aba42442a4c991cdbb52727fa370676f1">warp_helpers.h</a>
</li>
<li>relu_op()
: <a class="el" href="activation__quant__helpers_8h.xhtml#a75e592782269093560081144973b1227">activation_quant_helpers.h</a>
</li>
<li>remap_bilinear()
: <a class="el" href="remap_8cl.xhtml#a1d771133d1dfea450fdbacda1c34ce49">remap.cl</a>
</li>
<li>remap_nearest_neighbour()
: <a class="el" href="remap_8cl.xhtml#a786803611cc128275d32d9584376713e">remap.cl</a>
</li>
<li>reshape_layer()
: <a class="el" href="reshape__layer_8cl.xhtml#acdcb27be2437616997a28a2d8ba45315">reshape_layer.cl</a>
</li>
<li>RGB888_to_IYUV_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a0e87467985f2b64c5aaf073ee5c64267">color_convert.cl</a>
</li>
<li>RGB888_to_NV12_bt709()
: <a class="el" href="color__convert_8cl.xhtml#aa07d313ff115012737d4b522efc6079f">color_convert.cl</a>
</li>
<li>RGB888_to_RGBA8888_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a2a21de930ca0898bed0a081f40cb4406">color_convert.cl</a>
</li>
<li>RGB888_to_U8_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a25f017c5de97048db44e1a5eb431c32a">color_convert.cl</a>
</li>
<li>RGB888_to_YUV444_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a917c100f2da4a0e773bb63dd4f87de0b">color_convert.cl</a>
</li>
<li>RGBA8888_to_IYUV_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a18ef3b2b70de9af3e4386b2a07f2cd36">color_convert.cl</a>
</li>
<li>RGBA8888_to_NV12_bt709()
: <a class="el" href="color__convert_8cl.xhtml#a9ef9b466943c743b2a0f2865a70f741a">color_convert.cl</a>
</li>
<li>RGBA8888_to_RGB888_bt709()
: <a class="el" href="color__convert_8cl.xhtml#ae424d47188a7fffd83a3a9d0c0e1ce6e">color_convert.cl</a>
</li>
<li>RGBA8888_to_YUV444_bt709()
: <a class="el" href="color__convert_8cl.xhtml#aee9a7e06c86387d2a46aad341fa940d0">color_convert.cl</a>
</li>
<li>roi_pool_1x1()
: <a class="el" href="roi__pooling__layer_8cl.xhtml#aa23d7bc09d4a60b853c5b3ba5425c2ec">roi_pooling_layer.cl</a>
</li>
<li>roi_pooling_layer()
: <a class="el" href="roi__pooling__layer_8cl.xhtml#a2225a0fdbe433c31126daa25249acd8b">roi_pooling_layer.cl</a>
</li>
<li>roundup()
: <a class="el" href="utils_8hpp.xhtml#a8f6fbf8b243a10af40ce8d47a1013384">utils.hpp</a>
</li>
<li>row_reduce_max_3()
: <a class="el" href="non__linear__filter__helpers_8h.xhtml#a3138dafa8474a59f73dd837073f18ed7">non_linear_filter_helpers.h</a>
</li>
<li>row_reduce_max_5()
: <a class="el" href="non__linear__filter__helpers_8h.xhtml#a310f21b7cf0409431ddf246c4a98e52e">non_linear_filter_helpers.h</a>
</li>
<li>row_reduce_min_3()
: <a class="el" href="non__linear__filter__helpers_8h.xhtml#ae3e09114bb887de4e20122eed42671a1">non_linear_filter_helpers.h</a>
</li>
<li>row_reduce_min_5()
: <a class="el" href="non__linear__filter__helpers_8h.xhtml#aa9d1bdcaf911a5b861c2082181e6a716">non_linear_filter_helpers.h</a>
</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Mon Sep 2 2019 11:47:43 for Compute Library by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
