blob: 0622ce20abe0fcffe81c1f0e43fdde72e0af9353 [file] [log] [blame]
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001<!-- HTML header for doxygen 1.8.9.1-->
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head>
5<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6<meta http-equiv="X-UA-Compatible" content="IE=9"/>
7<meta name="generator" content="Doxygen 1.8.11"/>
8<meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9<title>Compute Library: src/core/CL/cl_kernels/helpers_asymm.h File Reference</title>
10<link href="tabs.css" rel="stylesheet" type="text/css"/>
11<script type="text/javascript" src="jquery.js"></script>
12<script type="text/javascript" src="dynsections.js"></script>
13<link href="navtree.css" rel="stylesheet" type="text/css"/>
14<script type="text/javascript" src="resize.js"></script>
15<script type="text/javascript" src="navtreedata.js"></script>
16<script type="text/javascript" src="navtree.js"></script>
17<script type="text/javascript">
18 $(document).ready(initResizable);
19 $(window).load(resizeHeight);
20</script>
21<link href="search/search.css" rel="stylesheet" type="text/css"/>
22<script type="text/javascript" src="search/searchdata.js"></script>
23<script type="text/javascript" src="search/search.js"></script>
24<script type="text/javascript">
25 $(document).ready(function() { init_search(); });
26</script>
27<script type="text/x-mathjax-config">
28 MathJax.Hub.Config({
29 extensions: ["tex2jax.js"],
30 jax: ["input/TeX","output/HTML-CSS"],
31});
32</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33<link href="doxygen.css" rel="stylesheet" type="text/css" />
34</head>
35<body>
36<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37<div id="titlearea">
38<table cellspacing="0" cellpadding="0">
39 <tbody>
40 <tr style="height: 56px;">
41 <td style="padding-left: 0.5em;">
42 <div id="projectname">Compute Library
Anthony Barbier06ea0482018-02-22 15:45:35 +000043 &#160;<span id="projectnumber">18.02</span>
Anthony Barbier8140e1e2017-12-14 23:48:46 +000044 </div>
45 </td>
46 </tr>
47 </tbody>
48</table>
49</div>
50<!-- end header part -->
51<!-- Generated by Doxygen 1.8.11 -->
52<script type="text/javascript">
53var searchBox = new SearchBox("searchBox", "search",false,'Search');
54</script>
55 <div id="navrow1" class="tabs">
56 <ul class="tablist">
57 <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58 <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59 <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60 <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61 <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
62 <li>
63 <div id="MSearchBox" class="MSearchBoxInactive">
64 <span class="left">
65 <img id="MSearchSelect" src="search/mag_sel.png"
66 onmouseover="return searchBox.OnSearchSelectShow()"
67 onmouseout="return searchBox.OnSearchSelectHide()"
68 alt=""/>
69 <input type="text" id="MSearchField" value="Search" accesskey="S"
70 onfocus="searchBox.OnSearchFieldFocus(true)"
71 onblur="searchBox.OnSearchFieldFocus(false)"
72 onkeyup="searchBox.OnSearchFieldChange(event)"/>
73 </span><span class="right">
74 <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75 </span>
76 </div>
77 </li>
78 </ul>
79 </div>
80 <div id="navrow2" class="tabs2">
81 <ul class="tablist">
82 <li><a href="files.xhtml"><span>File&#160;List</span></a></li>
83 <li><a href="globals.xhtml"><span>Globals</span></a></li>
84 </ul>
85 </div>
86</div><!-- top -->
87<div id="side-nav" class="ui-resizable side-nav-resizable">
88 <div id="nav-tree">
89 <div id="nav-tree-contents">
90 <div id="nav-sync" class="sync"></div>
91 </div>
92 </div>
93 <div id="splitbar" style="-moz-user-select:none;"
94 class="ui-resizable-handle">
95 </div>
96</div>
97<script type="text/javascript">
98$(document).ready(function(){initNavTree('helpers__asymm_8h.xhtml','');});
99</script>
100<div id="doc-content">
101<!-- window showing the filter options -->
102<div id="MSearchSelectWindow"
103 onmouseover="return searchBox.OnSearchSelectShow()"
104 onmouseout="return searchBox.OnSearchSelectHide()"
105 onkeydown="return searchBox.OnSearchSelectKey(event)">
106</div>
107
108<!-- iframe showing the search results (closed by default) -->
109<div id="MSearchResultsWindow">
110<iframe src="javascript:void(0)" frameborder="0"
111 name="MSearchResults" id="MSearchResults">
112</iframe>
113</div>
114
115<div class="header">
116 <div class="summary">
117<a href="#define-members">Macros</a> &#124;
118<a href="#func-members">Functions</a> </div>
119 <div class="headertitle">
120<div class="title">helpers_asymm.h File Reference</div> </div>
121</div><!--header-->
122<div class="contents">
123<div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
124</div>
125<p><a href="helpers__asymm_8h_source.xhtml">Go to the source code of this file.</a></p>
126<table class="memberdecls">
127<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
128Macros</h2></td></tr>
129<tr class="memitem:abf75e242631b23007e4046682aa57ec5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abf75e242631b23007e4046682aa57ec5">ASYMM_ROUNDING_DIVIDE_BY_POW2_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
130<tr class="memdesc:abf75e242631b23007e4046682aa57ec5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correctly-rounded-to-nearest division by a power-of-two. <a href="#abf75e242631b23007e4046682aa57ec5">More...</a><br /></td></tr>
131<tr class="separator:abf75e242631b23007e4046682aa57ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000132<tr class="memitem:ad4b199221927cbabbf859e4d2efb688d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad4b199221927cbabbf859e4d2efb688d">ASYMM_MULT_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
133<tr class="memdesc:ad4b199221927cbabbf859e4d2efb688d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Product of two numbers, interpreting them as fixed-point values in the interval [-1, 1), rounding to the nearest value, and saturating -1 * -1 to the maximum value. <a href="#ad4b199221927cbabbf859e4d2efb688d">More...</a><br /></td></tr>
134<tr class="separator:ad4b199221927cbabbf859e4d2efb688d"><td class="memSeparator" colspan="2">&#160;</td></tr>
135<tr class="memitem:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a3d8a3968a069eb8abbc28d31c20f6b8c">ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
136<tr class="memdesc:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( exp(x) \) for x in [-1/4, 0). <a href="#a3d8a3968a069eb8abbc28d31c20f6b8c">More...</a><br /></td></tr>
137<tr class="separator:a3d8a3968a069eb8abbc28d31c20f6b8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
138<tr class="memitem:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ab0b4069b25ac886d5cb6eb3b76473f88">ASYMM_SELECT_USING_MASK_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
139<tr class="memdesc:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Each bit of the result is set to the corresponding bit of either then_val or else_val depending on whether the corresponding bit of if_mask is set. <a href="#ab0b4069b25ac886d5cb6eb3b76473f88">More...</a><br /></td></tr>
140<tr class="separator:ab0b4069b25ac886d5cb6eb3b76473f88"><td class="memSeparator" colspan="2">&#160;</td></tr>
141<tr class="memitem:a8c47a92ec76a1e367b45305c17d9ea88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8c47a92ec76a1e367b45305c17d9ea88">ASYMM_MASK_IF_ZERO_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
142<tr class="memdesc:a8c47a92ec76a1e367b45305c17d9ea88"><td class="mdescLeft">&#160;</td><td class="mdescRight">For each element of input vector, the corresponding bits of the result item are set if the input item is zero. <a href="#a8c47a92ec76a1e367b45305c17d9ea88">More...</a><br /></td></tr>
143<tr class="separator:a8c47a92ec76a1e367b45305c17d9ea88"><td class="memSeparator" colspan="2">&#160;</td></tr>
144<tr class="memitem:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6dd3d8d22942f0ff3e59b4e32cfd4de3">ASYMM_MASK_IF_NON_ZERO_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
145<tr class="memdesc:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">For each element of input vector, the corresponding bits of the result item are set if the input item is non-zero. <a href="#a6dd3d8d22942f0ff3e59b4e32cfd4de3">More...</a><br /></td></tr>
146<tr class="separator:a6dd3d8d22942f0ff3e59b4e32cfd4de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
147<tr class="memitem:aa12ca21cb9a54d2e4c26d57303fe44a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa12ca21cb9a54d2e4c26d57303fe44a7">EXP_BARREL_SHIFTER_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
148<tr class="separator:aa12ca21cb9a54d2e4c26d57303fe44a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
149<tr class="memitem:a4d0a02b30d8cc5725d0a11781b488852"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4d0a02b30d8cc5725d0a11781b488852">ASYMM_EXP_ON_NEGATIVE_VALUES_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
150<tr class="memdesc:a4d0a02b30d8cc5725d0a11781b488852"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( exp(x) \) for x &lt; 0. <a href="#a4d0a02b30d8cc5725d0a11781b488852">More...</a><br /></td></tr>
151<tr class="separator:a4d0a02b30d8cc5725d0a11781b488852"><td class="memSeparator" colspan="2">&#160;</td></tr>
152<tr class="memitem:a737312bc4a68c79a77cfab4849793bc0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a737312bc4a68c79a77cfab4849793bc0">ASYMM_SATURATING_ROUNDING_MULT_BY_POW2_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
153<tr class="memdesc:a737312bc4a68c79a77cfab4849793bc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the product of a integer value by a power of two, with either a positive exponent (equivalent to an arithmetic left shift, saturating) or a negative exponent (equivalent to an arithmetic right shift, rounding to nearest). <a href="#a737312bc4a68c79a77cfab4849793bc0">More...</a><br /></td></tr>
154<tr class="separator:a737312bc4a68c79a77cfab4849793bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
155<tr class="memitem:a8d97c6698c0e44424deae3f3130c55ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8d97c6698c0e44424deae3f3130c55ac">ASYMM_ROUNDING_HALF_SUM_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
156<tr class="memdesc:a8d97c6698c0e44424deae3f3130c55ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates (a+b)/2, rounded to the nearest integer. <a href="#a8d97c6698c0e44424deae3f3130c55ac">More...</a><br /></td></tr>
157<tr class="separator:a8d97c6698c0e44424deae3f3130c55ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
158<tr class="memitem:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a0e53aa5d4cbcec7a0c0085838f32453d">ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
159<tr class="memdesc:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates \( 1 / (1 + x) \) for x in (0, 1). <a href="#a0e53aa5d4cbcec7a0c0085838f32453d">More...</a><br /></td></tr>
160<tr class="separator:a0e53aa5d4cbcec7a0c0085838f32453d"><td class="memSeparator" colspan="2">&#160;</td></tr>
161<tr class="memitem:aace85e2a32bacdaa4e2d2055deabfc57"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aace85e2a32bacdaa4e2d2055deabfc57">ASYMM_RESCALE_IMPL</a>(<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
162<tr class="memdesc:aace85e2a32bacdaa4e2d2055deabfc57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Considering the integer value as fixed-point, change the number of integer bits and update value accordingly. <a href="#aace85e2a32bacdaa4e2d2055deabfc57">More...</a><br /></td></tr>
163<tr class="separator:aace85e2a32bacdaa4e2d2055deabfc57"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000164<tr class="memitem:aa43fc359dea64362f3016384f4269845"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(x, exponent, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_rounding_divide_by_POW2_##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(x, exponent)</td></tr>
165<tr class="separator:aa43fc359dea64362f3016384f4269845"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000166<tr class="memitem:a5483aefd5e07244661178bfd3f434448"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(a, b, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, b)</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000167<tr class="separator:a5483aefd5e07244661178bfd3f434448"><td class="memSeparator" colspan="2">&#160;</td></tr>
168<tr class="memitem:a86de0ffca367bfcf27a8ae5dd1fdef2d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a86de0ffca367bfcf27a8ae5dd1fdef2d">ASYMM_MULT_BY_QUANT_MULTIPLIER_LESS_THAN_ONE</a>(x, quantized_multiplier, right_shift, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;<a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(<a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(x, quantized_multiplier, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>), right_shift, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td></tr>
169<tr class="separator:a86de0ffca367bfcf27a8ae5dd1fdef2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000170<tr class="memitem:aeebdcd88f4320931cd4a599ad1527e83"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aeebdcd88f4320931cd4a599ad1527e83">ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL</a>(a, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_exp_on_interval_between_negative_one_quarter_and_0_excl##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td></tr>
171<tr class="separator:aeebdcd88f4320931cd4a599ad1527e83"><td class="memSeparator" colspan="2">&#160;</td></tr>
172<tr class="memitem:a9bc08a8c1833c5e6055ad6665e3ccf12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a9bc08a8c1833c5e6055ad6665e3ccf12">ASYMM_SELECT_USING_MASK</a>(if_mask, then_val, else_val, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_select_using_mask##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(if_mask, then_val, else_val)</td></tr>
173<tr class="separator:a9bc08a8c1833c5e6055ad6665e3ccf12"><td class="memSeparator" colspan="2">&#160;</td></tr>
174<tr class="memitem:afc6a76528024472919bb5d50d067578b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#afc6a76528024472919bb5d50d067578b">ASYMM_MASK_IF_ZERO</a>(a, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_mask_if_zero##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td></tr>
175<tr class="separator:afc6a76528024472919bb5d50d067578b"><td class="memSeparator" colspan="2">&#160;</td></tr>
176<tr class="memitem:af1d5450c9c4c13a6b7aa52af197b54b2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#af1d5450c9c4c13a6b7aa52af197b54b2">ASYMM_MASK_IF_NON_ZERO</a>(a, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_mask_if_non_zero##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td></tr>
177<tr class="separator:af1d5450c9c4c13a6b7aa52af197b54b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
178<tr class="memitem:ace9ecff421cf885ad2c2d72d87c492cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ace9ecff421cf885ad2c2d72d87c492cb">EXP_BARREL_SHIFTER</a>(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;exp_barrel_shifter##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder)</td></tr>
179<tr class="separator:ace9ecff421cf885ad2c2d72d87c492cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
180<tr class="memitem:a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8">ASYMM_EXP_ON_NEGATIVE_VALUES</a>(a, k_integer_bits, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a54aedfa17c5ac2567107d5f488b0f4af">asymm_exp_on_negative_values</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, k_integer_bits)</td></tr>
181<tr class="separator:a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"><td class="memSeparator" colspan="2">&#160;</td></tr>
182<tr class="memitem:ae77f34e1316d52c1ee84c35be9efb0d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae77f34e1316d52c1ee84c35be9efb0d8">ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1</a>(a, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_one_over_one_plus_x_for_x_in_0_1##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td></tr>
183<tr class="separator:ae77f34e1316d52c1ee84c35be9efb0d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
184<tr class="memitem:a4cc3ff3a2eeb5f5e9d6743e08f632928"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4cc3ff3a2eeb5f5e9d6743e08f632928">ASYMM_SATURATING_ROUNDING_MULT_BY_POW2</a>(x, exponent, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_saturating_rounding_mult_by_pow2##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(x, exponent)</td></tr>
185<tr class="separator:a4cc3ff3a2eeb5f5e9d6743e08f632928"><td class="memSeparator" colspan="2">&#160;</td></tr>
186<tr class="memitem:ad47fa44c1566aa4678fe524478490612"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad47fa44c1566aa4678fe524478490612">ASYMM_ROUNDING_HALF_SUM</a>(a, b, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;asymm_rounding_half_sum##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, b)</td></tr>
187<tr class="separator:ad47fa44c1566aa4678fe524478490612"><td class="memSeparator" colspan="2">&#160;</td></tr>
188<tr class="memitem:a98585f1bb84dea90aecbf59785c46151"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a98585f1bb84dea90aecbf59785c46151">ASYMM_RESCALE</a>(<a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, src_integer_bits, dst_integer_bits, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(<a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, src_integer_bits, dst_integer_bits)</td></tr>
189<tr class="separator:a98585f1bb84dea90aecbf59785c46151"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000190</table><table class="memberdecls">
191<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
192Functions</h2></td></tr>
193<tr class="memitem:ae62b2416b40ca28724c065e95e18a25b"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae62b2416b40ca28724c065e95e18a25b">asymm_rounding_divide_by_POW2_2</a> (int2 x, int exponent)</td></tr>
194<tr class="separator:ae62b2416b40ca28724c065e95e18a25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000195<tr class="memitem:a2660d5193f286b247cf533d8ca234e77"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a2660d5193f286b247cf533d8ca234e77">asymm_rounding_divide_by_POW2_4</a> (int4 x, int exponent)</td></tr>
196<tr class="separator:a2660d5193f286b247cf533d8ca234e77"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000197<tr class="memitem:a38afb1b30447264fd62ca7ad86e7ea19"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a38afb1b30447264fd62ca7ad86e7ea19">asymm_rounding_divide_by_POW2_8</a> (int8 x, int exponent)</td></tr>
198<tr class="separator:a38afb1b30447264fd62ca7ad86e7ea19"><td class="memSeparator" colspan="2">&#160;</td></tr>
199<tr class="memitem:a21d65cd6ac14696d58509b82789db845"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a21d65cd6ac14696d58509b82789db845">asymm_rounding_divide_by_POW2_16</a> (int16 x, int exponent)</td></tr>
200<tr class="separator:a21d65cd6ac14696d58509b82789db845"><td class="memSeparator" colspan="2">&#160;</td></tr>
201<tr class="memitem:a5038b78913b76d782cc0aa0d841bd7ed"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a5038b78913b76d782cc0aa0d841bd7ed">asymm_mult2</a> (int2 a, int2 b)</td></tr>
202<tr class="separator:a5038b78913b76d782cc0aa0d841bd7ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000203<tr class="memitem:a6dca28649388d59ec0281af70d4507b2"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6dca28649388d59ec0281af70d4507b2">asymm_mult4</a> (int4 a, int4 b)</td></tr>
204<tr class="separator:a6dca28649388d59ec0281af70d4507b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000205<tr class="memitem:a165b0bbab841712ea2c9a17a09bfa166"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a165b0bbab841712ea2c9a17a09bfa166">asymm_mult8</a> (int8 a, int8 b)</td></tr>
206<tr class="separator:a165b0bbab841712ea2c9a17a09bfa166"><td class="memSeparator" colspan="2">&#160;</td></tr>
207<tr class="memitem:aef32e3a9c804f145deb6b88f0a444919"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aef32e3a9c804f145deb6b88f0a444919">asymm_mult16</a> (int16 a, int16 b)</td></tr>
208<tr class="separator:aef32e3a9c804f145deb6b88f0a444919"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000209<tr class="memitem:a8eb88d417247a1b8b8929e5c8faeb48d"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8eb88d417247a1b8b8929e5c8faeb48d">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl2</a> (int2 a)</td></tr>
210<tr class="separator:a8eb88d417247a1b8b8929e5c8faeb48d"><td class="memSeparator" colspan="2">&#160;</td></tr>
211<tr class="memitem:a43aa0011bd9b23ce3f691a9ae205fe07"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a43aa0011bd9b23ce3f691a9ae205fe07">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl4</a> (int4 a)</td></tr>
212<tr class="separator:a43aa0011bd9b23ce3f691a9ae205fe07"><td class="memSeparator" colspan="2">&#160;</td></tr>
213<tr class="memitem:accb6ee0e0c578704ae23e6ab0a57cdd0"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#accb6ee0e0c578704ae23e6ab0a57cdd0">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl8</a> (int8 a)</td></tr>
214<tr class="separator:accb6ee0e0c578704ae23e6ab0a57cdd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
215<tr class="memitem:a1d51b02a83af2a152fa52755f572f5a6"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1d51b02a83af2a152fa52755f572f5a6">asymm_exp_on_interval_between_negative_one_quarter_and_0_excl16</a> (int16 a)</td></tr>
216<tr class="separator:a1d51b02a83af2a152fa52755f572f5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
217<tr class="memitem:a0dade5bb9ed9aae49b6bb2875e273d89"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a0dade5bb9ed9aae49b6bb2875e273d89">asymm_select_using_mask2</a> (int2 if_mask, int2 then_val, int2 else_val)</td></tr>
218<tr class="separator:a0dade5bb9ed9aae49b6bb2875e273d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
219<tr class="memitem:a44e4d74ed42006c4153a9cb6c97285de"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a44e4d74ed42006c4153a9cb6c97285de">asymm_select_using_mask4</a> (int4 if_mask, int4 then_val, int4 else_val)</td></tr>
220<tr class="separator:a44e4d74ed42006c4153a9cb6c97285de"><td class="memSeparator" colspan="2">&#160;</td></tr>
221<tr class="memitem:a64682bc22716ad771d012ce4c7398652"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a64682bc22716ad771d012ce4c7398652">asymm_select_using_mask8</a> (int8 if_mask, int8 then_val, int8 else_val)</td></tr>
222<tr class="separator:a64682bc22716ad771d012ce4c7398652"><td class="memSeparator" colspan="2">&#160;</td></tr>
223<tr class="memitem:a7effd9e7de9fefa9d4ae4eb2cfc06090"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a7effd9e7de9fefa9d4ae4eb2cfc06090">asymm_select_using_mask16</a> (int16 if_mask, int16 then_val, int16 else_val)</td></tr>
224<tr class="separator:a7effd9e7de9fefa9d4ae4eb2cfc06090"><td class="memSeparator" colspan="2">&#160;</td></tr>
225<tr class="memitem:a6ed499c821cf4f6b3bc4049d49e35139"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6ed499c821cf4f6b3bc4049d49e35139">asymm_mask_if_zero2</a> (int2 a)</td></tr>
226<tr class="separator:a6ed499c821cf4f6b3bc4049d49e35139"><td class="memSeparator" colspan="2">&#160;</td></tr>
227<tr class="memitem:aed95c68d9545d401d2323cd8ad287fe1"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aed95c68d9545d401d2323cd8ad287fe1">asymm_mask_if_zero4</a> (int4 a)</td></tr>
228<tr class="separator:aed95c68d9545d401d2323cd8ad287fe1"><td class="memSeparator" colspan="2">&#160;</td></tr>
229<tr class="memitem:abefb0a278a588f03dc561db900df0958"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abefb0a278a588f03dc561db900df0958">asymm_mask_if_zero8</a> (int8 a)</td></tr>
230<tr class="separator:abefb0a278a588f03dc561db900df0958"><td class="memSeparator" colspan="2">&#160;</td></tr>
231<tr class="memitem:a509916b7ee582d87faf1312fde111c3b"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a509916b7ee582d87faf1312fde111c3b">asymm_mask_if_zero16</a> (int16 a)</td></tr>
232<tr class="separator:a509916b7ee582d87faf1312fde111c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
233<tr class="memitem:a885a16f240b119acc9f0721c07acdce9"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a885a16f240b119acc9f0721c07acdce9">asymm_mask_if_non_zero2</a> (int2 a)</td></tr>
234<tr class="separator:a885a16f240b119acc9f0721c07acdce9"><td class="memSeparator" colspan="2">&#160;</td></tr>
235<tr class="memitem:a2f180955030087d7538d5dc89f29eba9"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a2f180955030087d7538d5dc89f29eba9">asymm_mask_if_non_zero4</a> (int4 a)</td></tr>
236<tr class="separator:a2f180955030087d7538d5dc89f29eba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
237<tr class="memitem:a8de81d453a39d0f589b0d3e007c7fde1"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8de81d453a39d0f589b0d3e007c7fde1">asymm_mask_if_non_zero8</a> (int8 a)</td></tr>
238<tr class="separator:a8de81d453a39d0f589b0d3e007c7fde1"><td class="memSeparator" colspan="2">&#160;</td></tr>
239<tr class="memitem:a1e1fef1353d2458beb7fab06cc8f460e"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1e1fef1353d2458beb7fab06cc8f460e">asymm_mask_if_non_zero16</a> (int16 a)</td></tr>
240<tr class="separator:a1e1fef1353d2458beb7fab06cc8f460e"><td class="memSeparator" colspan="2">&#160;</td></tr>
241<tr class="memitem:ad12110cc5f3099fa90b631e7b05772a0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ad12110cc5f3099fa90b631e7b05772a0">exp_barrel_shifter2</a> (int2 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int2 remainder)</td></tr>
242<tr class="separator:ad12110cc5f3099fa90b631e7b05772a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
243<tr class="memitem:a521e3ded9b6ca69692e9415ef9b4cee1"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a521e3ded9b6ca69692e9415ef9b4cee1">exp_barrel_shifter4</a> (int4 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int4 remainder)</td></tr>
244<tr class="separator:a521e3ded9b6ca69692e9415ef9b4cee1"><td class="memSeparator" colspan="2">&#160;</td></tr>
245<tr class="memitem:a936aed524c644efcf20b28877e3a0f3f"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a936aed524c644efcf20b28877e3a0f3f">exp_barrel_shifter8</a> (int8 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int8 remainder)</td></tr>
246<tr class="separator:a936aed524c644efcf20b28877e3a0f3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
247<tr class="memitem:a4bde4cd395697b5d37af5116773f16ed"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a4bde4cd395697b5d37af5116773f16ed">exp_barrel_shifter16</a> (int16 result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, int16 remainder)</td></tr>
248<tr class="separator:a4bde4cd395697b5d37af5116773f16ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
249<tr class="memitem:a35b98dc80eefc6ce799720861a668691"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a35b98dc80eefc6ce799720861a668691">asymm_exp_on_negative_values2</a> (int2 a, int k_integer_bits)</td></tr>
250<tr class="separator:a35b98dc80eefc6ce799720861a668691"><td class="memSeparator" colspan="2">&#160;</td></tr>
251<tr class="memitem:aa1dda459c2b10a9620b2c14a928ed4ba"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#aa1dda459c2b10a9620b2c14a928ed4ba">asymm_exp_on_negative_values4</a> (int4 a, int k_integer_bits)</td></tr>
252<tr class="separator:aa1dda459c2b10a9620b2c14a928ed4ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
253<tr class="memitem:a429f20ad96413c1f7d4ee968afed6f0d"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a429f20ad96413c1f7d4ee968afed6f0d">asymm_exp_on_negative_values8</a> (int8 a, int k_integer_bits)</td></tr>
254<tr class="separator:a429f20ad96413c1f7d4ee968afed6f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
255<tr class="memitem:ae13cfab30e1d4c5f797f9d3d7c6acacf"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ae13cfab30e1d4c5f797f9d3d7c6acacf">asymm_exp_on_negative_values16</a> (int16 a, int k_integer_bits)</td></tr>
256<tr class="separator:ae13cfab30e1d4c5f797f9d3d7c6acacf"><td class="memSeparator" colspan="2">&#160;</td></tr>
257<tr class="memitem:ac5d336b40941ee7c63a750b3dc92b030"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ac5d336b40941ee7c63a750b3dc92b030">asymm_saturating_rounding_mult_by_pow22</a> (int2 x, int exponent)</td></tr>
258<tr class="separator:ac5d336b40941ee7c63a750b3dc92b030"><td class="memSeparator" colspan="2">&#160;</td></tr>
259<tr class="memitem:af06991bb67792a6fec9c426923f39745"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#af06991bb67792a6fec9c426923f39745">asymm_saturating_rounding_mult_by_pow24</a> (int4 x, int exponent)</td></tr>
260<tr class="separator:af06991bb67792a6fec9c426923f39745"><td class="memSeparator" colspan="2">&#160;</td></tr>
261<tr class="memitem:a1bfbcc866bf09921d6bf4fc39cd38d89"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a1bfbcc866bf09921d6bf4fc39cd38d89">asymm_saturating_rounding_mult_by_pow28</a> (int8 x, int exponent)</td></tr>
262<tr class="separator:a1bfbcc866bf09921d6bf4fc39cd38d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
263<tr class="memitem:a88b3d0aae3bcf134f9eb4b5637a4b73c"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a88b3d0aae3bcf134f9eb4b5637a4b73c">asymm_saturating_rounding_mult_by_pow216</a> (int16 x, int exponent)</td></tr>
264<tr class="separator:a88b3d0aae3bcf134f9eb4b5637a4b73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
265<tr class="memitem:acd43480a8530400e781603a995adcad0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#acd43480a8530400e781603a995adcad0">asymm_rounding_half_sum2</a> (int2 a, int2 b)</td></tr>
266<tr class="separator:acd43480a8530400e781603a995adcad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
267<tr class="memitem:a7dda5bba50450367760a7ad1148881be"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a7dda5bba50450367760a7ad1148881be">asymm_rounding_half_sum4</a> (int4 a, int4 b)</td></tr>
268<tr class="separator:a7dda5bba50450367760a7ad1148881be"><td class="memSeparator" colspan="2">&#160;</td></tr>
269<tr class="memitem:acba55fb1a4dfa6ab5080cc276550d5fd"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#acba55fb1a4dfa6ab5080cc276550d5fd">asymm_rounding_half_sum8</a> (int8 a, int8 b)</td></tr>
270<tr class="separator:acba55fb1a4dfa6ab5080cc276550d5fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
271<tr class="memitem:ab13b1910b09c0cf268f6a8af0e2013e2"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ab13b1910b09c0cf268f6a8af0e2013e2">asymm_rounding_half_sum16</a> (int16 a, int16 b)</td></tr>
272<tr class="separator:ab13b1910b09c0cf268f6a8af0e2013e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
273<tr class="memitem:a6524f601cf9a2ae69d5eab74576c93d0"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a6524f601cf9a2ae69d5eab74576c93d0">asymm_one_over_one_plus_x_for_x_in_0_12</a> (int2 a)</td></tr>
274<tr class="separator:a6524f601cf9a2ae69d5eab74576c93d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
275<tr class="memitem:a049439083adb7b960079832ad6367389"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a049439083adb7b960079832ad6367389">asymm_one_over_one_plus_x_for_x_in_0_14</a> (int4 a)</td></tr>
276<tr class="separator:a049439083adb7b960079832ad6367389"><td class="memSeparator" colspan="2">&#160;</td></tr>
277<tr class="memitem:abe37c90e62ee60565cbfbb38c4358fd6"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#abe37c90e62ee60565cbfbb38c4358fd6">asymm_one_over_one_plus_x_for_x_in_0_18</a> (int8 a)</td></tr>
278<tr class="separator:abe37c90e62ee60565cbfbb38c4358fd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
279<tr class="memitem:ac3316120c01b6c993ac8f2d3f2b4ff03"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#ac3316120c01b6c993ac8f2d3f2b4ff03">asymm_one_over_one_plus_x_for_x_in_0_116</a> (int16 a)</td></tr>
280<tr class="separator:ac3316120c01b6c993ac8f2d3f2b4ff03"><td class="memSeparator" colspan="2">&#160;</td></tr>
281<tr class="memitem:a49b94bfc99276975c6fed32c693cbac5"><td class="memItemLeft" align="right" valign="top">int2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a49b94bfc99276975c6fed32c693cbac5">asymm_rescale2</a> (int2 <a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, int src_integer_bits, int dst_integer_bits)</td></tr>
282<tr class="separator:a49b94bfc99276975c6fed32c693cbac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
283<tr class="memitem:a8f9d043040f28f051c7145281de94681"><td class="memItemLeft" align="right" valign="top">int4&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a8f9d043040f28f051c7145281de94681">asymm_rescale4</a> (int4 <a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, int src_integer_bits, int dst_integer_bits)</td></tr>
284<tr class="separator:a8f9d043040f28f051c7145281de94681"><td class="memSeparator" colspan="2">&#160;</td></tr>
285<tr class="memitem:a478b69bea5edb6ad939d8e7edd9e7e3f"><td class="memItemLeft" align="right" valign="top">int8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a478b69bea5edb6ad939d8e7edd9e7e3f">asymm_rescale8</a> (int8 <a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, int src_integer_bits, int dst_integer_bits)</td></tr>
286<tr class="separator:a478b69bea5edb6ad939d8e7edd9e7e3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
287<tr class="memitem:a700e603af523859efb90ed4b52b41c84"><td class="memItemLeft" align="right" valign="top">int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="helpers__asymm_8h.xhtml#a700e603af523859efb90ed4b52b41c84">asymm_rescale16</a> (int16 <a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, int src_integer_bits, int dst_integer_bits)</td></tr>
288<tr class="separator:a700e603af523859efb90ed4b52b41c84"><td class="memSeparator" colspan="2">&#160;</td></tr>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000289</table>
290<h2 class="groupheader">Macro Definition Documentation</h2>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000291<a class="anchor" id="aeebdcd88f4320931cd4a599ad1527e83"></a>
292<div class="memitem">
293<div class="memproto">
294 <table class="memname">
295 <tr>
296 <td class="memname">#define ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL</td>
297 <td>(</td>
298 <td class="paramtype">&#160;</td>
299 <td class="paramname">a, </td>
300 </tr>
301 <tr>
302 <td class="paramkey"></td>
303 <td></td>
304 <td class="paramtype">&#160;</td>
305 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
306 </tr>
307 <tr>
308 <td></td>
309 <td>)</td>
310 <td></td><td>&#160;&#160;&#160;asymm_exp_on_interval_between_negative_one_quarter_and_0_excl##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td>
311 </tr>
312 </table>
313</div><div class="memdoc">
314
315<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00298">298</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
316
317</div>
318</div>
319<a class="anchor" id="a3d8a3968a069eb8abbc28d31c20f6b8c"></a>
320<div class="memitem">
321<div class="memproto">
322 <table class="memname">
323 <tr>
324 <td class="memname">#define ASYMM_EXP_ON_INTERVAL_BETWEEN_NEGATIVE_ONE_QUARTER_AND_0_EXCL_IMPL</td>
325 <td>(</td>
326 <td class="paramtype">&#160;</td>
327 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
328 <td></td>
329 </tr>
330 </table>
331</div><div class="memdoc">
332<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_exp_on_interval_between_negative_one_quarter_and_0_excl<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) constant_term = 1895147668; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) constant_1_over_3 = 715827883; \</span></div><div class="line"><span class="preprocessor"> const int k_fractional_bits = 31; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x = a + (1 &lt;&lt; (k_fractional_bits - 3)); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x2 = ASYMM_MULT(x, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x3 = ASYMM_MULT(x2, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4 = ASYMM_MULT(x2, x2, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_4 = ASYMM_ROUNDING_DIVIDE_BY_POW2(x4, 2, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_24_plus_x3_over_6_plus_x2 = ASYMM_MULT((x4_over_4 + x3), constant_1_over_3, size) + x2; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x4_over_24_plus_x3_over_6_plus_x2_over_2 = ASYMM_ROUNDING_DIVIDE_BY_POW2(x4_over_24_plus_x3_over_6_plus_x2, 1, size); \</span></div><div class="line"><span class="preprocessor"> return constant_term + ASYMM_MULT(constant_term, x + x4_over_24_plus_x3_over_6_plus_x2_over_2, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
333<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
334</div><!-- fragment -->
335<p>Calculates \( exp(x) \) for x in [-1/4, 0). </p>
336<dl class="params"><dt>Parameters</dt><dd>
337 <table class="params">
338 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
339 </table>
340 </dd>
341</dl>
342<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
343
344<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00076">76</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
345
346</div>
347</div>
348<a class="anchor" id="a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8"></a>
349<div class="memitem">
350<div class="memproto">
351 <table class="memname">
352 <tr>
353 <td class="memname">#define ASYMM_EXP_ON_NEGATIVE_VALUES</td>
354 <td>(</td>
355 <td class="paramtype">&#160;</td>
356 <td class="paramname">a, </td>
357 </tr>
358 <tr>
359 <td class="paramkey"></td>
360 <td></td>
361 <td class="paramtype">&#160;</td>
362 <td class="paramname">k_integer_bits, </td>
363 </tr>
364 <tr>
365 <td class="paramkey"></td>
366 <td></td>
367 <td class="paramtype">&#160;</td>
368 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
369 </tr>
370 <tr>
371 <td></td>
372 <td>)</td>
373 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a54aedfa17c5ac2567107d5f488b0f4af">asymm_exp_on_negative_values</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, k_integer_bits)</td>
374 </tr>
375 </table>
376</div><div class="memdoc">
377
378<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00303">303</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
379
380</div>
381</div>
382<a class="anchor" id="a4d0a02b30d8cc5725d0a11781b488852"></a>
383<div class="memitem">
384<div class="memproto">
385 <table class="memname">
386 <tr>
387 <td class="memname">#define ASYMM_EXP_ON_NEGATIVE_VALUES_IMPL</td>
388 <td>(</td>
389 <td class="paramtype">&#160;</td>
390 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
391 <td></td>
392 </tr>
393 </table>
394</div><div class="memdoc">
395
396<p>Calculates \( exp(x) \) for x &lt; 0. </p>
397<dl class="params"><dt>Parameters</dt><dd>
398 <table class="params">
399 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
400 </table>
401 </dd>
402</dl>
403<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
404
405<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00163">163</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
406
407</div>
408</div>
409<a class="anchor" id="af1d5450c9c4c13a6b7aa52af197b54b2"></a>
410<div class="memitem">
411<div class="memproto">
412 <table class="memname">
413 <tr>
414 <td class="memname">#define ASYMM_MASK_IF_NON_ZERO</td>
415 <td>(</td>
416 <td class="paramtype">&#160;</td>
417 <td class="paramname">a, </td>
418 </tr>
419 <tr>
420 <td class="paramkey"></td>
421 <td></td>
422 <td class="paramtype">&#160;</td>
423 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
424 </tr>
425 <tr>
426 <td></td>
427 <td>)</td>
428 <td></td><td>&#160;&#160;&#160;asymm_mask_if_non_zero##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td>
429 </tr>
430 </table>
431</div><div class="memdoc">
432
433<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00301">301</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
434
435</div>
436</div>
437<a class="anchor" id="a6dd3d8d22942f0ff3e59b4e32cfd4de3"></a>
438<div class="memitem">
439<div class="memproto">
440 <table class="memname">
441 <tr>
442 <td class="memname">#define ASYMM_MASK_IF_NON_ZERO_IMPL</td>
443 <td>(</td>
444 <td class="paramtype">&#160;</td>
445 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
446 <td></td>
447 </tr>
448 </table>
449</div><div class="memdoc">
450<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_mask_if_non_zero<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_zeros = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_ones = ~0; \</span></div><div class="line"><span class="preprocessor"> return select(all_zeros, all_ones, a != 0); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
451<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
452</div><!-- fragment -->
453<p>For each element of input vector, the corresponding bits of the result item are set if the input item is non-zero. </p>
454<dl class="params"><dt>Parameters</dt><dd>
455 <table class="params">
456 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
457 </table>
458 </dd>
459</dl>
460<dl class="section return"><dt>Returns</dt><dd>Output vector with bits set when corresponding bit in <code>a</code> is non zero. </dd></dl>
461
462<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00135">135</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
463
464</div>
465</div>
466<a class="anchor" id="afc6a76528024472919bb5d50d067578b"></a>
467<div class="memitem">
468<div class="memproto">
469 <table class="memname">
470 <tr>
471 <td class="memname">#define ASYMM_MASK_IF_ZERO</td>
472 <td>(</td>
473 <td class="paramtype">&#160;</td>
474 <td class="paramname">a, </td>
475 </tr>
476 <tr>
477 <td class="paramkey"></td>
478 <td></td>
479 <td class="paramtype">&#160;</td>
480 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
481 </tr>
482 <tr>
483 <td></td>
484 <td>)</td>
485 <td></td><td>&#160;&#160;&#160;asymm_mask_if_zero##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td>
486 </tr>
487 </table>
488</div><div class="memdoc">
489
490<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00300">300</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
491
492</div>
493</div>
494<a class="anchor" id="a8c47a92ec76a1e367b45305c17d9ea88"></a>
495<div class="memitem">
496<div class="memproto">
497 <table class="memname">
498 <tr>
499 <td class="memname">#define ASYMM_MASK_IF_ZERO_IMPL</td>
500 <td>(</td>
501 <td class="paramtype">&#160;</td>
502 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
503 <td></td>
504 </tr>
505 </table>
506</div><div class="memdoc">
507<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_mask_if_zero<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_zeros = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) all_ones = ~0; \</span></div><div class="line"><span class="preprocessor"> return select(all_zeros, all_ones, a == 0); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
508<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
509</div><!-- fragment -->
510<p>For each element of input vector, the corresponding bits of the result item are set if the input item is zero. </p>
511<dl class="params"><dt>Parameters</dt><dd>
512 <table class="params">
513 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
514 </table>
515 </dd>
516</dl>
517<dl class="section return"><dt>Returns</dt><dd>Output vector with bits set when corresponding bit in <code>a</code> is zero. </dd></dl>
518
519<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00120">120</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
520
521</div>
522</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000523<a class="anchor" id="a5483aefd5e07244661178bfd3f434448"></a>
524<div class="memitem">
525<div class="memproto">
526 <table class="memname">
527 <tr>
528 <td class="memname">#define ASYMM_MULT</td>
529 <td>(</td>
530 <td class="paramtype">&#160;</td>
531 <td class="paramname">a, </td>
532 </tr>
533 <tr>
534 <td class="paramkey"></td>
535 <td></td>
536 <td class="paramtype">&#160;</td>
537 <td class="paramname">b, </td>
538 </tr>
539 <tr>
540 <td class="paramkey"></td>
541 <td></td>
542 <td class="paramtype">&#160;</td>
543 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
544 </tr>
545 <tr>
546 <td></td>
547 <td>)</td>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000548 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, b)</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000549 </tr>
550 </table>
551</div><div class="memdoc">
552
Anthony Barbier06ea0482018-02-22 15:45:35 +0000553<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00295">295</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000554
555</div>
556</div>
557<a class="anchor" id="a86de0ffca367bfcf27a8ae5dd1fdef2d"></a>
558<div class="memitem">
559<div class="memproto">
560 <table class="memname">
561 <tr>
562 <td class="memname">#define ASYMM_MULT_BY_QUANT_MULTIPLIER_LESS_THAN_ONE</td>
563 <td>(</td>
564 <td class="paramtype">&#160;</td>
565 <td class="paramname">x, </td>
566 </tr>
567 <tr>
568 <td class="paramkey"></td>
569 <td></td>
570 <td class="paramtype">&#160;</td>
571 <td class="paramname">quantized_multiplier, </td>
572 </tr>
573 <tr>
574 <td class="paramkey"></td>
575 <td></td>
576 <td class="paramtype">&#160;</td>
577 <td class="paramname">right_shift, </td>
578 </tr>
579 <tr>
580 <td class="paramkey"></td>
581 <td></td>
582 <td class="paramtype">&#160;</td>
583 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
584 </tr>
585 <tr>
586 <td></td>
587 <td>)</td>
588 <td></td><td>&#160;&#160;&#160;<a class="el" href="helpers__asymm_8h.xhtml#aa43fc359dea64362f3016384f4269845">ASYMM_ROUNDING_DIVIDE_BY_POW2</a>(<a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(x, quantized_multiplier, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>), right_shift, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)</td>
589 </tr>
590 </table>
591</div><div class="memdoc">
592
Anthony Barbier06ea0482018-02-22 15:45:35 +0000593<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00296">296</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
594
595<p>Referenced by <a class="el" href="direct__convolution__1x1__3x3__5x5__quantized_8cl_source.xhtml#l00278">output_stage_quantized()</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000596
597</div>
598</div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000599<a class="anchor" id="ad4b199221927cbabbf859e4d2efb688d"></a>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000600<div class="memitem">
601<div class="memproto">
602 <table class="memname">
603 <tr>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000604 <td class="memname">#define ASYMM_MULT_IMPL</td>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000605 <td>(</td>
606 <td class="paramtype">&#160;</td>
607 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
608 <td></td>
609 </tr>
610 </table>
611</div><div class="memdoc">
Anthony Barbier06ea0482018-02-22 15:45:35 +0000612<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) <a class="code" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a><span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a, VEC_DATA_TYPE(int, size) b) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> overflow = a == b &amp;&amp; a == INT_MIN; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> a_64 = convert_long##size(a); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> b_64 = convert_long##size(b); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> ab_64 = a_64 * b_64; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> ab_x2_high32 = convert_int##size(((ab_64 + (1 &lt;&lt; 30)) &gt;&gt; 31)); \</span></div><div class="line"><span class="preprocessor"> return select(ab_x2_high32, INT_MAX, overflow); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="softmax__layer__quantized_8cl_xhtml_a525a42d38133b1051b8924b456add4a1"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a></div><div class="ttdeci">#define asymm_mult(a, b)</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00056">softmax_layer_quantized.cl:56</a></div></div>
Anthony Barbierf45d5a92018-01-24 16:23:15 +0000613<div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000614<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
615</div><!-- fragment -->
616<p>Product of two numbers, interpreting them as fixed-point values in the interval [-1, 1), rounding to the nearest value, and saturating -1 * -1 to the maximum value. </p>
617<dl class="params"><dt>Parameters</dt><dd>
618 <table class="params">
619 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
620 </table>
621 </dd>
622</dl>
623<dl class="section return"><dt>Returns</dt><dd>Product of two fixed-point numbers. </dd></dl>
624
Anthony Barbier06ea0482018-02-22 15:45:35 +0000625<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00054">54</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
626
627</div>
628</div>
629<a class="anchor" id="ae77f34e1316d52c1ee84c35be9efb0d8"></a>
630<div class="memitem">
631<div class="memproto">
632 <table class="memname">
633 <tr>
634 <td class="memname">#define ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1</td>
635 <td>(</td>
636 <td class="paramtype">&#160;</td>
637 <td class="paramname">a, </td>
638 </tr>
639 <tr>
640 <td class="paramkey"></td>
641 <td></td>
642 <td class="paramtype">&#160;</td>
643 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
644 </tr>
645 <tr>
646 <td></td>
647 <td>)</td>
648 <td></td><td>&#160;&#160;&#160;asymm_one_over_one_plus_x_for_x_in_0_1##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a)</td>
649 </tr>
650 </table>
651</div><div class="memdoc">
652
653<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00304">304</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
654
655</div>
656</div>
657<a class="anchor" id="a0e53aa5d4cbcec7a0c0085838f32453d"></a>
658<div class="memitem">
659<div class="memproto">
660 <table class="memname">
661 <tr>
662 <td class="memname">#define ASYMM_ONE_OVER_ONE_PLUS_X_FOR_X_IN_0_1_IMPL</td>
663 <td>(</td>
664 <td class="paramtype">&#160;</td>
665 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
666 <td></td>
667 </tr>
668 </table>
669</div><div class="memdoc">
670<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_one_over_one_plus_x_for_x_in_0_1<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q0_one = INT_MAX; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_one = 1 &lt;&lt; (31 - 2); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> half_denominator = ASYMM_ROUNDING_HALF_SUM(a, Q0_one, size); \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_48_over_17 = 1515870810; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) Q2_neg_32_over_17 = -1010580540; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> x = Q2_48_over_17 + ASYMM_MULT(half_denominator, Q2_neg_32_over_17, size); \</span></div><div class="line"><span class="preprocessor"> for(int i = 0; i &lt; 3; i++) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> half_denominator_times_x = ASYMM_MULT(half_denominator, x, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> one_minus_half_denominator_times_x = Q2_one - half_denominator_times_x; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> tmp = ASYMM_MULT(x, one_minus_half_denominator_times_x, size); \</span></div><div class="line"><span class="preprocessor"> x = x + ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(tmp, 2, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(x, 1, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
671<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
672</div><!-- fragment -->
673<p>Calculates \( 1 / (1 + x) \) for x in (0, 1). </p>
674<dl class="params"><dt>Parameters</dt><dd>
675 <table class="params">
676 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
677 </table>
678 </dd>
679</dl>
680<dl class="section return"><dt>Returns</dt><dd>Result in fixed-point format Q0. </dd></dl>
681
682<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00257">257</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
683
684</div>
685</div>
686<a class="anchor" id="a98585f1bb84dea90aecbf59785c46151"></a>
687<div class="memitem">
688<div class="memproto">
689 <table class="memname">
690 <tr>
691 <td class="memname">#define ASYMM_RESCALE</td>
692 <td>(</td>
693 <td class="paramtype">&#160;</td>
694 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, </td>
695 </tr>
696 <tr>
697 <td class="paramkey"></td>
698 <td></td>
699 <td class="paramtype">&#160;</td>
700 <td class="paramname">src_integer_bits, </td>
701 </tr>
702 <tr>
703 <td class="paramkey"></td>
704 <td></td>
705 <td class="paramtype">&#160;</td>
706 <td class="paramname">dst_integer_bits, </td>
707 </tr>
708 <tr>
709 <td class="paramkey"></td>
710 <td></td>
711 <td class="paramtype">&#160;</td>
712 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
713 </tr>
714 <tr>
715 <td></td>
716 <td>)</td>
717 <td></td><td>&#160;&#160;&#160;<a class="el" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a>##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(<a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, src_integer_bits, dst_integer_bits)</td>
718 </tr>
719 </table>
720</div><div class="memdoc">
721
722<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00307">307</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
723
724</div>
725</div>
726<a class="anchor" id="aace85e2a32bacdaa4e2d2055deabfc57"></a>
727<div class="memitem">
728<div class="memproto">
729 <table class="memname">
730 <tr>
731 <td class="memname">#define ASYMM_RESCALE_IMPL</td>
732 <td>(</td>
733 <td class="paramtype">&#160;</td>
734 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
735 <td></td>
736 </tr>
737 </table>
738</div><div class="memdoc">
739<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) <a class="code" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a><span class="preprocessor">##size(VEC_DATA_TYPE(int, size) value, int src_integer_bits, int dst_integer_bits) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> int exponent = src_integer_bits - dst_integer_bits; \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SATURATING_ROUNDING_MULT_BY_POW2(value, exponent, size); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
740<div class="ttc" id="softmax__layer__quantized_8cl_xhtml_ad57ea340cdcfeb2e1375b70c3ae59bae"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a></div><div class="ttdeci">#define asymm_rescale(value, src_integer_bits, dst_integer_bits)</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00058">softmax_layer_quantized.cl:58</a></div></div>
741<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
742</div><!-- fragment -->
743<p>Considering the integer value as fixed-point, change the number of integer bits and update value accordingly. </p>
744<dl class="params"><dt>Parameters</dt><dd>
745 <table class="params">
746 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
747 </table>
748 </dd>
749</dl>
750<dl class="section return"><dt>Returns</dt><dd>Rescaled value. </dd></dl>
751
752<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00287">287</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000753
754</div>
755</div>
756<a class="anchor" id="aa43fc359dea64362f3016384f4269845"></a>
757<div class="memitem">
758<div class="memproto">
759 <table class="memname">
760 <tr>
761 <td class="memname">#define ASYMM_ROUNDING_DIVIDE_BY_POW2</td>
762 <td>(</td>
763 <td class="paramtype">&#160;</td>
764 <td class="paramname">x, </td>
765 </tr>
766 <tr>
767 <td class="paramkey"></td>
768 <td></td>
769 <td class="paramtype">&#160;</td>
770 <td class="paramname">exponent, </td>
771 </tr>
772 <tr>
773 <td class="paramkey"></td>
774 <td></td>
775 <td class="paramtype">&#160;</td>
776 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
777 </tr>
778 <tr>
779 <td></td>
780 <td>)</td>
781 <td></td><td>&#160;&#160;&#160;asymm_rounding_divide_by_POW2_##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(x, exponent)</td>
782 </tr>
783 </table>
784</div><div class="memdoc">
785
Anthony Barbier06ea0482018-02-22 15:45:35 +0000786<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00294">294</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000787
788</div>
789</div>
790<a class="anchor" id="abf75e242631b23007e4046682aa57ec5"></a>
791<div class="memitem">
792<div class="memproto">
793 <table class="memname">
794 <tr>
795 <td class="memname">#define ASYMM_ROUNDING_DIVIDE_BY_POW2_IMPL</td>
796 <td>(</td>
797 <td class="paramtype">&#160;</td>
798 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
799 <td></td>
800 </tr>
801 </table>
802</div><div class="memdoc">
Anthony Barbierf45d5a92018-01-24 16:23:15 +0000803<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_rounding_divide_by_POW2_<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) x, int exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> mask = (1 &lt;&lt; exponent) - 1; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) zero = 0; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) one = 1; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> threshold = (mask &gt;&gt; 1) + select(zero, one, x &lt; 0); \</span></div><div class="line"><span class="preprocessor"> return (x &gt;&gt; exponent) + select(zero, one, (x &amp; mask) &gt; threshold); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +0000804<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
805</div><!-- fragment -->
806<p>Correctly-rounded-to-nearest division by a power-of-two. </p>
807<dl class="params"><dt>Parameters</dt><dd>
808 <table class="params">
809 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
810 </table>
811 </dd>
812</dl>
813<dl class="section return"><dt>Returns</dt><dd>Correctly-rounded-to-nearest division by a power-of-two. </dd></dl>
814
815<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00035">35</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
816
817</div>
818</div>
Anthony Barbier06ea0482018-02-22 15:45:35 +0000819<a class="anchor" id="ad47fa44c1566aa4678fe524478490612"></a>
820<div class="memitem">
821<div class="memproto">
822 <table class="memname">
823 <tr>
824 <td class="memname">#define ASYMM_ROUNDING_HALF_SUM</td>
825 <td>(</td>
826 <td class="paramtype">&#160;</td>
827 <td class="paramname">a, </td>
828 </tr>
829 <tr>
830 <td class="paramkey"></td>
831 <td></td>
832 <td class="paramtype">&#160;</td>
833 <td class="paramname">b, </td>
834 </tr>
835 <tr>
836 <td class="paramkey"></td>
837 <td></td>
838 <td class="paramtype">&#160;</td>
839 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
840 </tr>
841 <tr>
842 <td></td>
843 <td>)</td>
844 <td></td><td>&#160;&#160;&#160;asymm_rounding_half_sum##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(a, b)</td>
845 </tr>
846 </table>
847</div><div class="memdoc">
848
849<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00306">306</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
850
851</div>
852</div>
853<a class="anchor" id="a8d97c6698c0e44424deae3f3130c55ac"></a>
854<div class="memitem">
855<div class="memproto">
856 <table class="memname">
857 <tr>
858 <td class="memname">#define ASYMM_ROUNDING_HALF_SUM_IMPL</td>
859 <td>(</td>
860 <td class="paramtype">&#160;</td>
861 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
862 <td></td>
863 </tr>
864 </table>
865</div><div class="memdoc">
866<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_rounding_half_sum<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) a, VEC_DATA_TYPE(int, size) b) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> a64 = convert_long##size(a); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> b64 = convert_long##size(b); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> sum = a64 + b64; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(long, size) one = 1; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(long, size) minus_one = -1; \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(long, size) \</span></div><div class="line"><span class="preprocessor"> sign = select(minus_one, one, sum &gt;= 0); \</span></div><div class="line"><span class="preprocessor"> return convert_int##size((sum + sign) / 2); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
867<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
868</div><!-- fragment -->
869<p>Calculates (a+b)/2, rounded to the nearest integer. </p>
870<p>Equivalent to VRHADD in the ARM NEON instruction set.</p>
871<dl class="params"><dt>Parameters</dt><dd>
872 <table class="params">
873 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
874 </table>
875 </dd>
876</dl>
877<dl class="section return"><dt>Returns</dt><dd>(a+b)/2, rounded to the nearest integer. </dd></dl>
878
879<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00235">235</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
880
881</div>
882</div>
883<a class="anchor" id="a4cc3ff3a2eeb5f5e9d6743e08f632928"></a>
884<div class="memitem">
885<div class="memproto">
886 <table class="memname">
887 <tr>
888 <td class="memname">#define ASYMM_SATURATING_ROUNDING_MULT_BY_POW2</td>
889 <td>(</td>
890 <td class="paramtype">&#160;</td>
891 <td class="paramname">x, </td>
892 </tr>
893 <tr>
894 <td class="paramkey"></td>
895 <td></td>
896 <td class="paramtype">&#160;</td>
897 <td class="paramname">exponent, </td>
898 </tr>
899 <tr>
900 <td class="paramkey"></td>
901 <td></td>
902 <td class="paramtype">&#160;</td>
903 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
904 </tr>
905 <tr>
906 <td></td>
907 <td>)</td>
908 <td></td><td>&#160;&#160;&#160;asymm_saturating_rounding_mult_by_pow2##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(x, exponent)</td>
909 </tr>
910 </table>
911</div><div class="memdoc">
912
913<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00305">305</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
914
915</div>
916</div>
917<a class="anchor" id="a737312bc4a68c79a77cfab4849793bc0"></a>
918<div class="memitem">
919<div class="memproto">
920 <table class="memname">
921 <tr>
922 <td class="memname">#define ASYMM_SATURATING_ROUNDING_MULT_BY_POW2_IMPL</td>
923 <td>(</td>
924 <td class="paramtype">&#160;</td>
925 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
926 <td></td>
927 </tr>
928 </table>
929</div><div class="memdoc">
930<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_saturating_rounding_mult_by_pow2<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) x, int exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> if(exponent &lt; 0) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> return ASYMM_ROUNDING_DIVIDE_BY_POW2(x, -exponent, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) min = INT_MIN; \</span></div><div class="line"><span class="preprocessor"> const VEC_DATA_TYPE(int, size) max = INT_MAX; \</span></div><div class="line"><span class="preprocessor"> int threshold = ((1 &lt;&lt; (31 - exponent)) - 1); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> positive_mask = ASYMM_MASK_IF_NON_ZERO(x &gt; threshold, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> negative_mask = ASYMM_MASK_IF_NON_ZERO(x &lt; -threshold, size); \</span></div><div class="line"><span class="preprocessor"> VEC_DATA_TYPE(int, size) \</span></div><div class="line"><span class="preprocessor"> result = x &lt;&lt; exponent; \</span></div><div class="line"><span class="preprocessor"> result = ASYMM_SELECT_USING_MASK(positive_mask, max, result, size); \</span></div><div class="line"><span class="preprocessor"> result = ASYMM_SELECT_USING_MASK(negative_mask, min, result, size); \</span></div><div class="line"><span class="preprocessor"> return result; \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
931<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
932</div><!-- fragment -->
933<p>Calculates the product of a integer value by a power of two, with either a positive exponent (equivalent to an arithmetic left shift, saturating) or a negative exponent (equivalent to an arithmetic right shift, rounding to nearest). </p>
934<dl class="params"><dt>Parameters</dt><dd>
935 <table class="params">
936 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
937 </table>
938 </dd>
939</dl>
940<dl class="section return"><dt>Returns</dt><dd>Arithmetic left or right shift. </dd></dl>
941
942<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00206">206</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
943
944</div>
945</div>
946<a class="anchor" id="a9bc08a8c1833c5e6055ad6665e3ccf12"></a>
947<div class="memitem">
948<div class="memproto">
949 <table class="memname">
950 <tr>
951 <td class="memname">#define ASYMM_SELECT_USING_MASK</td>
952 <td>(</td>
953 <td class="paramtype">&#160;</td>
954 <td class="paramname">if_mask, </td>
955 </tr>
956 <tr>
957 <td class="paramkey"></td>
958 <td></td>
959 <td class="paramtype">&#160;</td>
960 <td class="paramname">then_val, </td>
961 </tr>
962 <tr>
963 <td class="paramkey"></td>
964 <td></td>
965 <td class="paramtype">&#160;</td>
966 <td class="paramname">else_val, </td>
967 </tr>
968 <tr>
969 <td class="paramkey"></td>
970 <td></td>
971 <td class="paramtype">&#160;</td>
972 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
973 </tr>
974 <tr>
975 <td></td>
976 <td>)</td>
977 <td></td><td>&#160;&#160;&#160;asymm_select_using_mask##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(if_mask, then_val, else_val)</td>
978 </tr>
979 </table>
980</div><div class="memdoc">
981
982<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00299">299</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
983
984</div>
985</div>
986<a class="anchor" id="ab0b4069b25ac886d5cb6eb3b76473f88"></a>
987<div class="memitem">
988<div class="memproto">
989 <table class="memname">
990 <tr>
991 <td class="memname">#define ASYMM_SELECT_USING_MASK_IMPL</td>
992 <td>(</td>
993 <td class="paramtype">&#160;</td>
994 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
995 <td></td>
996 </tr>
997 </table>
998</div><div class="memdoc">
999<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) asymm_select_using_mask<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) if_mask, VEC_DATA_TYPE(int, size) then_val, VEC_DATA_TYPE(int, size) else_val) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> return (if_mask &amp; then_val) ^ (~if_mask &amp; else_val); \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
1000<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
1001</div><!-- fragment -->
1002<p>Each bit of the result is set to the corresponding bit of either then_val or else_val depending on whether the corresponding bit of if_mask is set. </p>
1003<p>Equivalent to the VBSL instruction in ARM NEON.</p>
1004<dl class="params"><dt>Parameters</dt><dd>
1005 <table class="params">
1006 <tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>Size of vector.</td></tr>
1007 </table>
1008 </dd>
1009</dl>
1010<dl class="section return"><dt>Returns</dt><dd>Result contaning bits from <code>then_val</code> or from <code>else_val</code> depending on corresponding bit in <code>if_mask</code> is set or not. </dd></dl>
1011
1012<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00107">107</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1013
1014</div>
1015</div>
1016<a class="anchor" id="ace9ecff421cf885ad2c2d72d87c492cb"></a>
1017<div class="memitem">
1018<div class="memproto">
1019 <table class="memname">
1020 <tr>
1021 <td class="memname">#define EXP_BARREL_SHIFTER</td>
1022 <td>(</td>
1023 <td class="paramtype">&#160;</td>
1024 <td class="paramname">result, </td>
1025 </tr>
1026 <tr>
1027 <td class="paramkey"></td>
1028 <td></td>
1029 <td class="paramtype">&#160;</td>
1030 <td class="paramname">exponent, </td>
1031 </tr>
1032 <tr>
1033 <td class="paramkey"></td>
1034 <td></td>
1035 <td class="paramtype">&#160;</td>
1036 <td class="paramname">fp_multiplier, </td>
1037 </tr>
1038 <tr>
1039 <td class="paramkey"></td>
1040 <td></td>
1041 <td class="paramtype">&#160;</td>
1042 <td class="paramname">k_integer_bits, </td>
1043 </tr>
1044 <tr>
1045 <td class="paramkey"></td>
1046 <td></td>
1047 <td class="paramtype">&#160;</td>
1048 <td class="paramname">k_fractional_bits, </td>
1049 </tr>
1050 <tr>
1051 <td class="paramkey"></td>
1052 <td></td>
1053 <td class="paramtype">&#160;</td>
1054 <td class="paramname">remainder, </td>
1055 </tr>
1056 <tr>
1057 <td class="paramkey"></td>
1058 <td></td>
1059 <td class="paramtype">&#160;</td>
1060 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>&#160;</td>
1061 </tr>
1062 <tr>
1063 <td></td>
1064 <td>)</td>
1065 <td></td><td>&#160;&#160;&#160;exp_barrel_shifter##<a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>(result, exponent, fp_multiplier, k_integer_bits, k_fractional_bits, remainder)</td>
1066 </tr>
1067 </table>
1068</div><div class="memdoc">
1069
1070<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00302">302</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1071
1072</div>
1073</div>
1074<a class="anchor" id="aa12ca21cb9a54d2e4c26d57303fe44a7"></a>
1075<div class="memitem">
1076<div class="memproto">
1077 <table class="memname">
1078 <tr>
1079 <td class="memname">#define EXP_BARREL_SHIFTER_IMPL</td>
1080 <td>(</td>
1081 <td class="paramtype">&#160;</td>
1082 <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></td><td>)</td>
1083 <td></td>
1084 </tr>
1085 </table>
1086</div><div class="memdoc">
1087<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<span class="keywordtype">int</span>, <a class="code" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>) exp_barrel_shifter<span class="preprocessor">##size(VEC_DATA_TYPE(int, size) result, int exponent, int fp_multiplier, int k_integer_bits, int k_fractional_bits, VEC_DATA_TYPE(int, size) remainder) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> if(k_integer_bits &gt; exponent) \</span></div><div class="line"><span class="preprocessor"> { \</span></div><div class="line"><span class="preprocessor"> const int k_shift_amount = k_integer_bits &gt; exponent ? k_fractional_bits + exponent : 0; \</span></div><div class="line"><span class="preprocessor"> return ASYMM_SELECT_USING_MASK( \</span></div><div class="line"><span class="preprocessor"> ASYMM_MASK_IF_NON_ZERO(remainder &amp; (1 &lt;&lt; k_shift_amount), size), \</span></div><div class="line"><span class="preprocessor"> ASYMM_MULT(result, fp_multiplier, size), result, size); \</span></div><div class="line"><span class="preprocessor"> } \</span></div><div class="line"><span class="preprocessor"> \</span></div><div class="line"><span class="preprocessor"> return result; \</span></div><div class="line"><span class="preprocessor"> }</span></div><div class="ttc" id="hwc_8hpp_xhtml_ab2c6b258f02add8fdf4cfc7c371dd772"><div class="ttname"><a href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a></div><div class="ttdeci">uint32_t size</div><div class="ttdef"><b>Definition:</b> <a href="hwc_8hpp_source.xhtml#l00286">hwc.hpp:286</a></div></div>
1088<div class="ttc" id="fixed__point_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00093">fixed_point.h:93</a></div></div>
1089</div><!-- fragment -->
1090<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00143">143</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1091
1092</div>
1093</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001094<h2 class="groupheader">Function Documentation</h2>
Anthony Barbier06ea0482018-02-22 15:45:35 +00001095<a class="anchor" id="a1d51b02a83af2a152fa52755f572f5a6"></a>
1096<div class="memitem">
1097<div class="memproto">
1098<table class="mlabels">
1099 <tr>
1100 <td class="mlabels-left">
1101 <table class="memname">
1102 <tr>
1103 <td class="memname">int16 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl16 </td>
1104 <td>(</td>
1105 <td class="paramtype">int16&#160;</td>
1106 <td class="paramname"><em>a</em></td><td>)</td>
1107 <td></td>
1108 </tr>
1109 </table>
1110 </td>
1111 <td class="mlabels-right">
1112<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1113 </tr>
1114</table>
1115</div><div class="memdoc">
1116
1117<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00322">322</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1118
1119</div>
1120</div>
1121<a class="anchor" id="a8eb88d417247a1b8b8929e5c8faeb48d"></a>
1122<div class="memitem">
1123<div class="memproto">
1124<table class="mlabels">
1125 <tr>
1126 <td class="mlabels-left">
1127 <table class="memname">
1128 <tr>
1129 <td class="memname">int2 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl2 </td>
1130 <td>(</td>
1131 <td class="paramtype">int2&#160;</td>
1132 <td class="paramname"><em>a</em></td><td>)</td>
1133 <td></td>
1134 </tr>
1135 </table>
1136 </td>
1137 <td class="mlabels-right">
1138<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1139 </tr>
1140</table>
1141</div><div class="memdoc">
1142
1143<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00319">319</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1144
1145</div>
1146</div>
1147<a class="anchor" id="a43aa0011bd9b23ce3f691a9ae205fe07"></a>
1148<div class="memitem">
1149<div class="memproto">
1150<table class="mlabels">
1151 <tr>
1152 <td class="mlabels-left">
1153 <table class="memname">
1154 <tr>
1155 <td class="memname">int4 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl4 </td>
1156 <td>(</td>
1157 <td class="paramtype">int4&#160;</td>
1158 <td class="paramname"><em>a</em></td><td>)</td>
1159 <td></td>
1160 </tr>
1161 </table>
1162 </td>
1163 <td class="mlabels-right">
1164<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1165 </tr>
1166</table>
1167</div><div class="memdoc">
1168
1169<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00320">320</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1170
1171</div>
1172</div>
1173<a class="anchor" id="accb6ee0e0c578704ae23e6ab0a57cdd0"></a>
1174<div class="memitem">
1175<div class="memproto">
1176<table class="mlabels">
1177 <tr>
1178 <td class="mlabels-left">
1179 <table class="memname">
1180 <tr>
1181 <td class="memname">int8 asymm_exp_on_interval_between_negative_one_quarter_and_0_excl8 </td>
1182 <td>(</td>
1183 <td class="paramtype">int8&#160;</td>
1184 <td class="paramname"><em>a</em></td><td>)</td>
1185 <td></td>
1186 </tr>
1187 </table>
1188 </td>
1189 <td class="mlabels-right">
1190<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1191 </tr>
1192</table>
1193</div><div class="memdoc">
1194
1195<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00321">321</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1196
1197</div>
1198</div>
1199<a class="anchor" id="ae13cfab30e1d4c5f797f9d3d7c6acacf"></a>
1200<div class="memitem">
1201<div class="memproto">
1202<table class="mlabels">
1203 <tr>
1204 <td class="mlabels-left">
1205 <table class="memname">
1206 <tr>
1207 <td class="memname">int16 asymm_exp_on_negative_values16 </td>
1208 <td>(</td>
1209 <td class="paramtype">int16&#160;</td>
1210 <td class="paramname"><em>a</em>, </td>
1211 </tr>
1212 <tr>
1213 <td class="paramkey"></td>
1214 <td></td>
1215 <td class="paramtype">int&#160;</td>
1216 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1217 </tr>
1218 <tr>
1219 <td></td>
1220 <td>)</td>
1221 <td></td><td></td>
1222 </tr>
1223 </table>
1224 </td>
1225 <td class="mlabels-right">
1226<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1227 </tr>
1228</table>
1229</div><div class="memdoc">
1230
1231<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00347">347</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1232
1233</div>
1234</div>
1235<a class="anchor" id="a35b98dc80eefc6ce799720861a668691"></a>
1236<div class="memitem">
1237<div class="memproto">
1238<table class="mlabels">
1239 <tr>
1240 <td class="mlabels-left">
1241 <table class="memname">
1242 <tr>
1243 <td class="memname">int2 asymm_exp_on_negative_values2 </td>
1244 <td>(</td>
1245 <td class="paramtype">int2&#160;</td>
1246 <td class="paramname"><em>a</em>, </td>
1247 </tr>
1248 <tr>
1249 <td class="paramkey"></td>
1250 <td></td>
1251 <td class="paramtype">int&#160;</td>
1252 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1253 </tr>
1254 <tr>
1255 <td></td>
1256 <td>)</td>
1257 <td></td><td></td>
1258 </tr>
1259 </table>
1260 </td>
1261 <td class="mlabels-right">
1262<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1263 </tr>
1264</table>
1265</div><div class="memdoc">
1266
1267<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00344">344</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1268
1269</div>
1270</div>
1271<a class="anchor" id="aa1dda459c2b10a9620b2c14a928ed4ba"></a>
1272<div class="memitem">
1273<div class="memproto">
1274<table class="mlabels">
1275 <tr>
1276 <td class="mlabels-left">
1277 <table class="memname">
1278 <tr>
1279 <td class="memname">int4 asymm_exp_on_negative_values4 </td>
1280 <td>(</td>
1281 <td class="paramtype">int4&#160;</td>
1282 <td class="paramname"><em>a</em>, </td>
1283 </tr>
1284 <tr>
1285 <td class="paramkey"></td>
1286 <td></td>
1287 <td class="paramtype">int&#160;</td>
1288 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1289 </tr>
1290 <tr>
1291 <td></td>
1292 <td>)</td>
1293 <td></td><td></td>
1294 </tr>
1295 </table>
1296 </td>
1297 <td class="mlabels-right">
1298<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1299 </tr>
1300</table>
1301</div><div class="memdoc">
1302
1303<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00345">345</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1304
1305</div>
1306</div>
1307<a class="anchor" id="a429f20ad96413c1f7d4ee968afed6f0d"></a>
1308<div class="memitem">
1309<div class="memproto">
1310<table class="mlabels">
1311 <tr>
1312 <td class="mlabels-left">
1313 <table class="memname">
1314 <tr>
1315 <td class="memname">int8 asymm_exp_on_negative_values8 </td>
1316 <td>(</td>
1317 <td class="paramtype">int8&#160;</td>
1318 <td class="paramname"><em>a</em>, </td>
1319 </tr>
1320 <tr>
1321 <td class="paramkey"></td>
1322 <td></td>
1323 <td class="paramtype">int&#160;</td>
1324 <td class="paramname"><em>k_integer_bits</em>&#160;</td>
1325 </tr>
1326 <tr>
1327 <td></td>
1328 <td>)</td>
1329 <td></td><td></td>
1330 </tr>
1331 </table>
1332 </td>
1333 <td class="mlabels-right">
1334<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1335 </tr>
1336</table>
1337</div><div class="memdoc">
1338
1339<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00346">346</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1340
1341</div>
1342</div>
1343<a class="anchor" id="a1e1fef1353d2458beb7fab06cc8f460e"></a>
1344<div class="memitem">
1345<div class="memproto">
1346<table class="mlabels">
1347 <tr>
1348 <td class="mlabels-left">
1349 <table class="memname">
1350 <tr>
1351 <td class="memname">int16 asymm_mask_if_non_zero16 </td>
1352 <td>(</td>
1353 <td class="paramtype">int16&#160;</td>
1354 <td class="paramname"><em>a</em></td><td>)</td>
1355 <td></td>
1356 </tr>
1357 </table>
1358 </td>
1359 <td class="mlabels-right">
1360<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1361 </tr>
1362</table>
1363</div><div class="memdoc">
1364
1365<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00337">337</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1366
1367</div>
1368</div>
1369<a class="anchor" id="a885a16f240b119acc9f0721c07acdce9"></a>
1370<div class="memitem">
1371<div class="memproto">
1372<table class="mlabels">
1373 <tr>
1374 <td class="mlabels-left">
1375 <table class="memname">
1376 <tr>
1377 <td class="memname">int2 asymm_mask_if_non_zero2 </td>
1378 <td>(</td>
1379 <td class="paramtype">int2&#160;</td>
1380 <td class="paramname"><em>a</em></td><td>)</td>
1381 <td></td>
1382 </tr>
1383 </table>
1384 </td>
1385 <td class="mlabels-right">
1386<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1387 </tr>
1388</table>
1389</div><div class="memdoc">
1390
1391<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00334">334</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1392
1393</div>
1394</div>
1395<a class="anchor" id="a2f180955030087d7538d5dc89f29eba9"></a>
1396<div class="memitem">
1397<div class="memproto">
1398<table class="mlabels">
1399 <tr>
1400 <td class="mlabels-left">
1401 <table class="memname">
1402 <tr>
1403 <td class="memname">int4 asymm_mask_if_non_zero4 </td>
1404 <td>(</td>
1405 <td class="paramtype">int4&#160;</td>
1406 <td class="paramname"><em>a</em></td><td>)</td>
1407 <td></td>
1408 </tr>
1409 </table>
1410 </td>
1411 <td class="mlabels-right">
1412<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1413 </tr>
1414</table>
1415</div><div class="memdoc">
1416
1417<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00335">335</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1418
1419</div>
1420</div>
1421<a class="anchor" id="a8de81d453a39d0f589b0d3e007c7fde1"></a>
1422<div class="memitem">
1423<div class="memproto">
1424<table class="mlabels">
1425 <tr>
1426 <td class="mlabels-left">
1427 <table class="memname">
1428 <tr>
1429 <td class="memname">int8 asymm_mask_if_non_zero8 </td>
1430 <td>(</td>
1431 <td class="paramtype">int8&#160;</td>
1432 <td class="paramname"><em>a</em></td><td>)</td>
1433 <td></td>
1434 </tr>
1435 </table>
1436 </td>
1437 <td class="mlabels-right">
1438<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1439 </tr>
1440</table>
1441</div><div class="memdoc">
1442
1443<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00336">336</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1444
1445</div>
1446</div>
1447<a class="anchor" id="a509916b7ee582d87faf1312fde111c3b"></a>
1448<div class="memitem">
1449<div class="memproto">
1450<table class="mlabels">
1451 <tr>
1452 <td class="mlabels-left">
1453 <table class="memname">
1454 <tr>
1455 <td class="memname">int16 asymm_mask_if_zero16 </td>
1456 <td>(</td>
1457 <td class="paramtype">int16&#160;</td>
1458 <td class="paramname"><em>a</em></td><td>)</td>
1459 <td></td>
1460 </tr>
1461 </table>
1462 </td>
1463 <td class="mlabels-right">
1464<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1465 </tr>
1466</table>
1467</div><div class="memdoc">
1468
1469<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00332">332</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1470
1471</div>
1472</div>
1473<a class="anchor" id="a6ed499c821cf4f6b3bc4049d49e35139"></a>
1474<div class="memitem">
1475<div class="memproto">
1476<table class="mlabels">
1477 <tr>
1478 <td class="mlabels-left">
1479 <table class="memname">
1480 <tr>
1481 <td class="memname">int2 asymm_mask_if_zero2 </td>
1482 <td>(</td>
1483 <td class="paramtype">int2&#160;</td>
1484 <td class="paramname"><em>a</em></td><td>)</td>
1485 <td></td>
1486 </tr>
1487 </table>
1488 </td>
1489 <td class="mlabels-right">
1490<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1491 </tr>
1492</table>
1493</div><div class="memdoc">
1494
1495<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00329">329</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1496
1497</div>
1498</div>
1499<a class="anchor" id="aed95c68d9545d401d2323cd8ad287fe1"></a>
1500<div class="memitem">
1501<div class="memproto">
1502<table class="mlabels">
1503 <tr>
1504 <td class="mlabels-left">
1505 <table class="memname">
1506 <tr>
1507 <td class="memname">int4 asymm_mask_if_zero4 </td>
1508 <td>(</td>
1509 <td class="paramtype">int4&#160;</td>
1510 <td class="paramname"><em>a</em></td><td>)</td>
1511 <td></td>
1512 </tr>
1513 </table>
1514 </td>
1515 <td class="mlabels-right">
1516<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1517 </tr>
1518</table>
1519</div><div class="memdoc">
1520
1521<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00330">330</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1522
1523</div>
1524</div>
1525<a class="anchor" id="abefb0a278a588f03dc561db900df0958"></a>
1526<div class="memitem">
1527<div class="memproto">
1528<table class="mlabels">
1529 <tr>
1530 <td class="mlabels-left">
1531 <table class="memname">
1532 <tr>
1533 <td class="memname">int8 asymm_mask_if_zero8 </td>
1534 <td>(</td>
1535 <td class="paramtype">int8&#160;</td>
1536 <td class="paramname"><em>a</em></td><td>)</td>
1537 <td></td>
1538 </tr>
1539 </table>
1540 </td>
1541 <td class="mlabels-right">
1542<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1543 </tr>
1544</table>
1545</div><div class="memdoc">
1546
1547<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00331">331</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1548
1549</div>
1550</div>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001551<a class="anchor" id="aef32e3a9c804f145deb6b88f0a444919"></a>
1552<div class="memitem">
1553<div class="memproto">
1554<table class="mlabels">
1555 <tr>
1556 <td class="mlabels-left">
1557 <table class="memname">
1558 <tr>
1559 <td class="memname">int16 asymm_mult16 </td>
1560 <td>(</td>
1561 <td class="paramtype">int16&#160;</td>
1562 <td class="paramname"><em>a</em>, </td>
1563 </tr>
1564 <tr>
1565 <td class="paramkey"></td>
1566 <td></td>
1567 <td class="paramtype">int16&#160;</td>
1568 <td class="paramname"><em>b</em>&#160;</td>
1569 </tr>
1570 <tr>
1571 <td></td>
1572 <td>)</td>
1573 <td></td><td></td>
1574 </tr>
1575 </table>
1576 </td>
1577 <td class="mlabels-right">
1578<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1579 </tr>
1580</table>
1581</div><div class="memdoc">
1582
Anthony Barbier06ea0482018-02-22 15:45:35 +00001583<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00317">317</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001584
1585</div>
1586</div>
1587<a class="anchor" id="a5038b78913b76d782cc0aa0d841bd7ed"></a>
1588<div class="memitem">
1589<div class="memproto">
1590<table class="mlabels">
1591 <tr>
1592 <td class="mlabels-left">
1593 <table class="memname">
1594 <tr>
1595 <td class="memname">int2 asymm_mult2 </td>
1596 <td>(</td>
1597 <td class="paramtype">int2&#160;</td>
1598 <td class="paramname"><em>a</em>, </td>
1599 </tr>
1600 <tr>
1601 <td class="paramkey"></td>
1602 <td></td>
1603 <td class="paramtype">int2&#160;</td>
1604 <td class="paramname"><em>b</em>&#160;</td>
1605 </tr>
1606 <tr>
1607 <td></td>
1608 <td>)</td>
1609 <td></td><td></td>
1610 </tr>
1611 </table>
1612 </td>
1613 <td class="mlabels-right">
1614<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1615 </tr>
1616</table>
1617</div><div class="memdoc">
1618
Anthony Barbier06ea0482018-02-22 15:45:35 +00001619<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00314">314</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1620
1621</div>
1622</div>
1623<a class="anchor" id="a6dca28649388d59ec0281af70d4507b2"></a>
1624<div class="memitem">
1625<div class="memproto">
1626<table class="mlabels">
1627 <tr>
1628 <td class="mlabels-left">
1629 <table class="memname">
1630 <tr>
1631 <td class="memname">int4 asymm_mult4 </td>
1632 <td>(</td>
1633 <td class="paramtype">int4&#160;</td>
1634 <td class="paramname"><em>a</em>, </td>
1635 </tr>
1636 <tr>
1637 <td class="paramkey"></td>
1638 <td></td>
1639 <td class="paramtype">int4&#160;</td>
1640 <td class="paramname"><em>b</em>&#160;</td>
1641 </tr>
1642 <tr>
1643 <td></td>
1644 <td>)</td>
1645 <td></td><td></td>
1646 </tr>
1647 </table>
1648 </td>
1649 <td class="mlabels-right">
1650<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1651 </tr>
1652</table>
1653</div><div class="memdoc">
1654
1655<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00315">315</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001656
1657</div>
1658</div>
1659<a class="anchor" id="a165b0bbab841712ea2c9a17a09bfa166"></a>
1660<div class="memitem">
1661<div class="memproto">
1662<table class="mlabels">
1663 <tr>
1664 <td class="mlabels-left">
1665 <table class="memname">
1666 <tr>
1667 <td class="memname">int8 asymm_mult8 </td>
1668 <td>(</td>
1669 <td class="paramtype">int8&#160;</td>
1670 <td class="paramname"><em>a</em>, </td>
1671 </tr>
1672 <tr>
1673 <td class="paramkey"></td>
1674 <td></td>
1675 <td class="paramtype">int8&#160;</td>
1676 <td class="paramname"><em>b</em>&#160;</td>
1677 </tr>
1678 <tr>
1679 <td></td>
1680 <td>)</td>
1681 <td></td><td></td>
1682 </tr>
1683 </table>
1684 </td>
1685 <td class="mlabels-right">
1686<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1687 </tr>
1688</table>
1689</div><div class="memdoc">
1690
Anthony Barbier06ea0482018-02-22 15:45:35 +00001691<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00316">316</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1692
1693</div>
1694</div>
1695<a class="anchor" id="ac3316120c01b6c993ac8f2d3f2b4ff03"></a>
1696<div class="memitem">
1697<div class="memproto">
1698<table class="mlabels">
1699 <tr>
1700 <td class="mlabels-left">
1701 <table class="memname">
1702 <tr>
1703 <td class="memname">int16 asymm_one_over_one_plus_x_for_x_in_0_116 </td>
1704 <td>(</td>
1705 <td class="paramtype">int16&#160;</td>
1706 <td class="paramname"><em>a</em></td><td>)</td>
1707 <td></td>
1708 </tr>
1709 </table>
1710 </td>
1711 <td class="mlabels-right">
1712<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1713 </tr>
1714</table>
1715</div><div class="memdoc">
1716
1717<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00362">362</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1718
1719</div>
1720</div>
1721<a class="anchor" id="a6524f601cf9a2ae69d5eab74576c93d0"></a>
1722<div class="memitem">
1723<div class="memproto">
1724<table class="mlabels">
1725 <tr>
1726 <td class="mlabels-left">
1727 <table class="memname">
1728 <tr>
1729 <td class="memname">int2 asymm_one_over_one_plus_x_for_x_in_0_12 </td>
1730 <td>(</td>
1731 <td class="paramtype">int2&#160;</td>
1732 <td class="paramname"><em>a</em></td><td>)</td>
1733 <td></td>
1734 </tr>
1735 </table>
1736 </td>
1737 <td class="mlabels-right">
1738<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1739 </tr>
1740</table>
1741</div><div class="memdoc">
1742
1743<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00359">359</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1744
1745</div>
1746</div>
1747<a class="anchor" id="a049439083adb7b960079832ad6367389"></a>
1748<div class="memitem">
1749<div class="memproto">
1750<table class="mlabels">
1751 <tr>
1752 <td class="mlabels-left">
1753 <table class="memname">
1754 <tr>
1755 <td class="memname">int4 asymm_one_over_one_plus_x_for_x_in_0_14 </td>
1756 <td>(</td>
1757 <td class="paramtype">int4&#160;</td>
1758 <td class="paramname"><em>a</em></td><td>)</td>
1759 <td></td>
1760 </tr>
1761 </table>
1762 </td>
1763 <td class="mlabels-right">
1764<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1765 </tr>
1766</table>
1767</div><div class="memdoc">
1768
1769<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00360">360</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1770
1771</div>
1772</div>
1773<a class="anchor" id="abe37c90e62ee60565cbfbb38c4358fd6"></a>
1774<div class="memitem">
1775<div class="memproto">
1776<table class="mlabels">
1777 <tr>
1778 <td class="mlabels-left">
1779 <table class="memname">
1780 <tr>
1781 <td class="memname">int8 asymm_one_over_one_plus_x_for_x_in_0_18 </td>
1782 <td>(</td>
1783 <td class="paramtype">int8&#160;</td>
1784 <td class="paramname"><em>a</em></td><td>)</td>
1785 <td></td>
1786 </tr>
1787 </table>
1788 </td>
1789 <td class="mlabels-right">
1790<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1791 </tr>
1792</table>
1793</div><div class="memdoc">
1794
1795<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00361">361</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1796
1797</div>
1798</div>
1799<a class="anchor" id="a700e603af523859efb90ed4b52b41c84"></a>
1800<div class="memitem">
1801<div class="memproto">
1802<table class="mlabels">
1803 <tr>
1804 <td class="mlabels-left">
1805 <table class="memname">
1806 <tr>
1807 <td class="memname">int16 asymm_rescale16 </td>
1808 <td>(</td>
1809 <td class="paramtype">int16&#160;</td>
1810 <td class="paramname"><em>value</em>, </td>
1811 </tr>
1812 <tr>
1813 <td class="paramkey"></td>
1814 <td></td>
1815 <td class="paramtype">int&#160;</td>
1816 <td class="paramname"><em>src_integer_bits</em>, </td>
1817 </tr>
1818 <tr>
1819 <td class="paramkey"></td>
1820 <td></td>
1821 <td class="paramtype">int&#160;</td>
1822 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1823 </tr>
1824 <tr>
1825 <td></td>
1826 <td>)</td>
1827 <td></td><td></td>
1828 </tr>
1829 </table>
1830 </td>
1831 <td class="mlabels-right">
1832<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1833 </tr>
1834</table>
1835</div><div class="memdoc">
1836
1837<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00367">367</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1838
1839</div>
1840</div>
1841<a class="anchor" id="a49b94bfc99276975c6fed32c693cbac5"></a>
1842<div class="memitem">
1843<div class="memproto">
1844<table class="mlabels">
1845 <tr>
1846 <td class="mlabels-left">
1847 <table class="memname">
1848 <tr>
1849 <td class="memname">int2 asymm_rescale2 </td>
1850 <td>(</td>
1851 <td class="paramtype">int2&#160;</td>
1852 <td class="paramname"><em>value</em>, </td>
1853 </tr>
1854 <tr>
1855 <td class="paramkey"></td>
1856 <td></td>
1857 <td class="paramtype">int&#160;</td>
1858 <td class="paramname"><em>src_integer_bits</em>, </td>
1859 </tr>
1860 <tr>
1861 <td class="paramkey"></td>
1862 <td></td>
1863 <td class="paramtype">int&#160;</td>
1864 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1865 </tr>
1866 <tr>
1867 <td></td>
1868 <td>)</td>
1869 <td></td><td></td>
1870 </tr>
1871 </table>
1872 </td>
1873 <td class="mlabels-right">
1874<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1875 </tr>
1876</table>
1877</div><div class="memdoc">
1878
1879<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00364">364</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1880
1881</div>
1882</div>
1883<a class="anchor" id="a8f9d043040f28f051c7145281de94681"></a>
1884<div class="memitem">
1885<div class="memproto">
1886<table class="mlabels">
1887 <tr>
1888 <td class="mlabels-left">
1889 <table class="memname">
1890 <tr>
1891 <td class="memname">int4 asymm_rescale4 </td>
1892 <td>(</td>
1893 <td class="paramtype">int4&#160;</td>
1894 <td class="paramname"><em>value</em>, </td>
1895 </tr>
1896 <tr>
1897 <td class="paramkey"></td>
1898 <td></td>
1899 <td class="paramtype">int&#160;</td>
1900 <td class="paramname"><em>src_integer_bits</em>, </td>
1901 </tr>
1902 <tr>
1903 <td class="paramkey"></td>
1904 <td></td>
1905 <td class="paramtype">int&#160;</td>
1906 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1907 </tr>
1908 <tr>
1909 <td></td>
1910 <td>)</td>
1911 <td></td><td></td>
1912 </tr>
1913 </table>
1914 </td>
1915 <td class="mlabels-right">
1916<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1917 </tr>
1918</table>
1919</div><div class="memdoc">
1920
1921<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00365">365</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
1922
1923</div>
1924</div>
1925<a class="anchor" id="a478b69bea5edb6ad939d8e7edd9e7e3f"></a>
1926<div class="memitem">
1927<div class="memproto">
1928<table class="mlabels">
1929 <tr>
1930 <td class="mlabels-left">
1931 <table class="memname">
1932 <tr>
1933 <td class="memname">int8 asymm_rescale8 </td>
1934 <td>(</td>
1935 <td class="paramtype">int8&#160;</td>
1936 <td class="paramname"><em>value</em>, </td>
1937 </tr>
1938 <tr>
1939 <td class="paramkey"></td>
1940 <td></td>
1941 <td class="paramtype">int&#160;</td>
1942 <td class="paramname"><em>src_integer_bits</em>, </td>
1943 </tr>
1944 <tr>
1945 <td class="paramkey"></td>
1946 <td></td>
1947 <td class="paramtype">int&#160;</td>
1948 <td class="paramname"><em>dst_integer_bits</em>&#160;</td>
1949 </tr>
1950 <tr>
1951 <td></td>
1952 <td>)</td>
1953 <td></td><td></td>
1954 </tr>
1955 </table>
1956 </td>
1957 <td class="mlabels-right">
1958<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1959 </tr>
1960</table>
1961</div><div class="memdoc">
1962
1963<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00366">366</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
Anthony Barbier8140e1e2017-12-14 23:48:46 +00001964
1965</div>
1966</div>
1967<a class="anchor" id="a21d65cd6ac14696d58509b82789db845"></a>
1968<div class="memitem">
1969<div class="memproto">
1970<table class="mlabels">
1971 <tr>
1972 <td class="mlabels-left">
1973 <table class="memname">
1974 <tr>
1975 <td class="memname">int16 asymm_rounding_divide_by_POW2_16 </td>
1976 <td>(</td>
1977 <td class="paramtype">int16&#160;</td>
1978 <td class="paramname"><em>x</em>, </td>
1979 </tr>
1980 <tr>
1981 <td class="paramkey"></td>
1982 <td></td>
1983 <td class="paramtype">int&#160;</td>
1984 <td class="paramname"><em>exponent</em>&#160;</td>
1985 </tr>
1986 <tr>
1987 <td></td>
1988 <td>)</td>
1989 <td></td><td></td>
1990 </tr>
1991 </table>
1992 </td>
1993 <td class="mlabels-right">
1994<span class="mlabels"><span class="mlabel">inline</span></span> </td>
1995 </tr>
1996</table>
1997</div><div class="memdoc">
1998
Anthony Barbier06ea0482018-02-22 15:45:35 +00001999<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00312">312</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2000
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002001</div>
2002</div>
2003<a class="anchor" id="ae62b2416b40ca28724c065e95e18a25b"></a>
2004<div class="memitem">
2005<div class="memproto">
2006<table class="mlabels">
2007 <tr>
2008 <td class="mlabels-left">
2009 <table class="memname">
2010 <tr>
2011 <td class="memname">int2 asymm_rounding_divide_by_POW2_2 </td>
2012 <td>(</td>
2013 <td class="paramtype">int2&#160;</td>
2014 <td class="paramname"><em>x</em>, </td>
2015 </tr>
2016 <tr>
2017 <td class="paramkey"></td>
2018 <td></td>
2019 <td class="paramtype">int&#160;</td>
2020 <td class="paramname"><em>exponent</em>&#160;</td>
2021 </tr>
2022 <tr>
2023 <td></td>
2024 <td>)</td>
2025 <td></td><td></td>
2026 </tr>
2027 </table>
2028 </td>
2029 <td class="mlabels-right">
2030<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2031 </tr>
2032</table>
2033</div><div class="memdoc">
2034
Anthony Barbier06ea0482018-02-22 15:45:35 +00002035<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00309">309</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2036
2037</div>
2038</div>
2039<a class="anchor" id="a2660d5193f286b247cf533d8ca234e77"></a>
2040<div class="memitem">
2041<div class="memproto">
2042<table class="mlabels">
2043 <tr>
2044 <td class="mlabels-left">
2045 <table class="memname">
2046 <tr>
2047 <td class="memname">int4 asymm_rounding_divide_by_POW2_4 </td>
2048 <td>(</td>
2049 <td class="paramtype">int4&#160;</td>
2050 <td class="paramname"><em>x</em>, </td>
2051 </tr>
2052 <tr>
2053 <td class="paramkey"></td>
2054 <td></td>
2055 <td class="paramtype">int&#160;</td>
2056 <td class="paramname"><em>exponent</em>&#160;</td>
2057 </tr>
2058 <tr>
2059 <td></td>
2060 <td>)</td>
2061 <td></td><td></td>
2062 </tr>
2063 </table>
2064 </td>
2065 <td class="mlabels-right">
2066<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2067 </tr>
2068</table>
2069</div><div class="memdoc">
2070
2071<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00310">310</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2072
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002073</div>
2074</div>
2075<a class="anchor" id="a38afb1b30447264fd62ca7ad86e7ea19"></a>
2076<div class="memitem">
2077<div class="memproto">
2078<table class="mlabels">
2079 <tr>
2080 <td class="mlabels-left">
2081 <table class="memname">
2082 <tr>
2083 <td class="memname">int8 asymm_rounding_divide_by_POW2_8 </td>
2084 <td>(</td>
2085 <td class="paramtype">int8&#160;</td>
2086 <td class="paramname"><em>x</em>, </td>
2087 </tr>
2088 <tr>
2089 <td class="paramkey"></td>
2090 <td></td>
2091 <td class="paramtype">int&#160;</td>
2092 <td class="paramname"><em>exponent</em>&#160;</td>
2093 </tr>
2094 <tr>
2095 <td></td>
2096 <td>)</td>
2097 <td></td><td></td>
2098 </tr>
2099 </table>
2100 </td>
2101 <td class="mlabels-right">
2102<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2103 </tr>
2104</table>
2105</div><div class="memdoc">
2106
Anthony Barbier06ea0482018-02-22 15:45:35 +00002107<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00311">311</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2108
2109</div>
2110</div>
2111<a class="anchor" id="ab13b1910b09c0cf268f6a8af0e2013e2"></a>
2112<div class="memitem">
2113<div class="memproto">
2114<table class="mlabels">
2115 <tr>
2116 <td class="mlabels-left">
2117 <table class="memname">
2118 <tr>
2119 <td class="memname">int16 asymm_rounding_half_sum16 </td>
2120 <td>(</td>
2121 <td class="paramtype">int16&#160;</td>
2122 <td class="paramname"><em>a</em>, </td>
2123 </tr>
2124 <tr>
2125 <td class="paramkey"></td>
2126 <td></td>
2127 <td class="paramtype">int16&#160;</td>
2128 <td class="paramname"><em>b</em>&#160;</td>
2129 </tr>
2130 <tr>
2131 <td></td>
2132 <td>)</td>
2133 <td></td><td></td>
2134 </tr>
2135 </table>
2136 </td>
2137 <td class="mlabels-right">
2138<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2139 </tr>
2140</table>
2141</div><div class="memdoc">
2142
2143<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00357">357</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2144
2145</div>
2146</div>
2147<a class="anchor" id="acd43480a8530400e781603a995adcad0"></a>
2148<div class="memitem">
2149<div class="memproto">
2150<table class="mlabels">
2151 <tr>
2152 <td class="mlabels-left">
2153 <table class="memname">
2154 <tr>
2155 <td class="memname">int2 asymm_rounding_half_sum2 </td>
2156 <td>(</td>
2157 <td class="paramtype">int2&#160;</td>
2158 <td class="paramname"><em>a</em>, </td>
2159 </tr>
2160 <tr>
2161 <td class="paramkey"></td>
2162 <td></td>
2163 <td class="paramtype">int2&#160;</td>
2164 <td class="paramname"><em>b</em>&#160;</td>
2165 </tr>
2166 <tr>
2167 <td></td>
2168 <td>)</td>
2169 <td></td><td></td>
2170 </tr>
2171 </table>
2172 </td>
2173 <td class="mlabels-right">
2174<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2175 </tr>
2176</table>
2177</div><div class="memdoc">
2178
2179<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00354">354</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2180
2181</div>
2182</div>
2183<a class="anchor" id="a7dda5bba50450367760a7ad1148881be"></a>
2184<div class="memitem">
2185<div class="memproto">
2186<table class="mlabels">
2187 <tr>
2188 <td class="mlabels-left">
2189 <table class="memname">
2190 <tr>
2191 <td class="memname">int4 asymm_rounding_half_sum4 </td>
2192 <td>(</td>
2193 <td class="paramtype">int4&#160;</td>
2194 <td class="paramname"><em>a</em>, </td>
2195 </tr>
2196 <tr>
2197 <td class="paramkey"></td>
2198 <td></td>
2199 <td class="paramtype">int4&#160;</td>
2200 <td class="paramname"><em>b</em>&#160;</td>
2201 </tr>
2202 <tr>
2203 <td></td>
2204 <td>)</td>
2205 <td></td><td></td>
2206 </tr>
2207 </table>
2208 </td>
2209 <td class="mlabels-right">
2210<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2211 </tr>
2212</table>
2213</div><div class="memdoc">
2214
2215<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00355">355</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2216
2217</div>
2218</div>
2219<a class="anchor" id="acba55fb1a4dfa6ab5080cc276550d5fd"></a>
2220<div class="memitem">
2221<div class="memproto">
2222<table class="mlabels">
2223 <tr>
2224 <td class="mlabels-left">
2225 <table class="memname">
2226 <tr>
2227 <td class="memname">int8 asymm_rounding_half_sum8 </td>
2228 <td>(</td>
2229 <td class="paramtype">int8&#160;</td>
2230 <td class="paramname"><em>a</em>, </td>
2231 </tr>
2232 <tr>
2233 <td class="paramkey"></td>
2234 <td></td>
2235 <td class="paramtype">int8&#160;</td>
2236 <td class="paramname"><em>b</em>&#160;</td>
2237 </tr>
2238 <tr>
2239 <td></td>
2240 <td>)</td>
2241 <td></td><td></td>
2242 </tr>
2243 </table>
2244 </td>
2245 <td class="mlabels-right">
2246<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2247 </tr>
2248</table>
2249</div><div class="memdoc">
2250
2251<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00356">356</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2252
2253</div>
2254</div>
2255<a class="anchor" id="a88b3d0aae3bcf134f9eb4b5637a4b73c"></a>
2256<div class="memitem">
2257<div class="memproto">
2258<table class="mlabels">
2259 <tr>
2260 <td class="mlabels-left">
2261 <table class="memname">
2262 <tr>
2263 <td class="memname">int16 asymm_saturating_rounding_mult_by_pow216 </td>
2264 <td>(</td>
2265 <td class="paramtype">int16&#160;</td>
2266 <td class="paramname"><em>x</em>, </td>
2267 </tr>
2268 <tr>
2269 <td class="paramkey"></td>
2270 <td></td>
2271 <td class="paramtype">int&#160;</td>
2272 <td class="paramname"><em>exponent</em>&#160;</td>
2273 </tr>
2274 <tr>
2275 <td></td>
2276 <td>)</td>
2277 <td></td><td></td>
2278 </tr>
2279 </table>
2280 </td>
2281 <td class="mlabels-right">
2282<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2283 </tr>
2284</table>
2285</div><div class="memdoc">
2286
2287<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00352">352</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2288
2289</div>
2290</div>
2291<a class="anchor" id="ac5d336b40941ee7c63a750b3dc92b030"></a>
2292<div class="memitem">
2293<div class="memproto">
2294<table class="mlabels">
2295 <tr>
2296 <td class="mlabels-left">
2297 <table class="memname">
2298 <tr>
2299 <td class="memname">int2 asymm_saturating_rounding_mult_by_pow22 </td>
2300 <td>(</td>
2301 <td class="paramtype">int2&#160;</td>
2302 <td class="paramname"><em>x</em>, </td>
2303 </tr>
2304 <tr>
2305 <td class="paramkey"></td>
2306 <td></td>
2307 <td class="paramtype">int&#160;</td>
2308 <td class="paramname"><em>exponent</em>&#160;</td>
2309 </tr>
2310 <tr>
2311 <td></td>
2312 <td>)</td>
2313 <td></td><td></td>
2314 </tr>
2315 </table>
2316 </td>
2317 <td class="mlabels-right">
2318<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2319 </tr>
2320</table>
2321</div><div class="memdoc">
2322
2323<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00349">349</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2324
2325</div>
2326</div>
2327<a class="anchor" id="af06991bb67792a6fec9c426923f39745"></a>
2328<div class="memitem">
2329<div class="memproto">
2330<table class="mlabels">
2331 <tr>
2332 <td class="mlabels-left">
2333 <table class="memname">
2334 <tr>
2335 <td class="memname">int4 asymm_saturating_rounding_mult_by_pow24 </td>
2336 <td>(</td>
2337 <td class="paramtype">int4&#160;</td>
2338 <td class="paramname"><em>x</em>, </td>
2339 </tr>
2340 <tr>
2341 <td class="paramkey"></td>
2342 <td></td>
2343 <td class="paramtype">int&#160;</td>
2344 <td class="paramname"><em>exponent</em>&#160;</td>
2345 </tr>
2346 <tr>
2347 <td></td>
2348 <td>)</td>
2349 <td></td><td></td>
2350 </tr>
2351 </table>
2352 </td>
2353 <td class="mlabels-right">
2354<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2355 </tr>
2356</table>
2357</div><div class="memdoc">
2358
2359<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00350">350</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2360
2361</div>
2362</div>
2363<a class="anchor" id="a1bfbcc866bf09921d6bf4fc39cd38d89"></a>
2364<div class="memitem">
2365<div class="memproto">
2366<table class="mlabels">
2367 <tr>
2368 <td class="mlabels-left">
2369 <table class="memname">
2370 <tr>
2371 <td class="memname">int8 asymm_saturating_rounding_mult_by_pow28 </td>
2372 <td>(</td>
2373 <td class="paramtype">int8&#160;</td>
2374 <td class="paramname"><em>x</em>, </td>
2375 </tr>
2376 <tr>
2377 <td class="paramkey"></td>
2378 <td></td>
2379 <td class="paramtype">int&#160;</td>
2380 <td class="paramname"><em>exponent</em>&#160;</td>
2381 </tr>
2382 <tr>
2383 <td></td>
2384 <td>)</td>
2385 <td></td><td></td>
2386 </tr>
2387 </table>
2388 </td>
2389 <td class="mlabels-right">
2390<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2391 </tr>
2392</table>
2393</div><div class="memdoc">
2394
2395<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00351">351</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2396
2397</div>
2398</div>
2399<a class="anchor" id="a7effd9e7de9fefa9d4ae4eb2cfc06090"></a>
2400<div class="memitem">
2401<div class="memproto">
2402<table class="mlabels">
2403 <tr>
2404 <td class="mlabels-left">
2405 <table class="memname">
2406 <tr>
2407 <td class="memname">int16 asymm_select_using_mask16 </td>
2408 <td>(</td>
2409 <td class="paramtype">int16&#160;</td>
2410 <td class="paramname"><em>if_mask</em>, </td>
2411 </tr>
2412 <tr>
2413 <td class="paramkey"></td>
2414 <td></td>
2415 <td class="paramtype">int16&#160;</td>
2416 <td class="paramname"><em>then_val</em>, </td>
2417 </tr>
2418 <tr>
2419 <td class="paramkey"></td>
2420 <td></td>
2421 <td class="paramtype">int16&#160;</td>
2422 <td class="paramname"><em>else_val</em>&#160;</td>
2423 </tr>
2424 <tr>
2425 <td></td>
2426 <td>)</td>
2427 <td></td><td></td>
2428 </tr>
2429 </table>
2430 </td>
2431 <td class="mlabels-right">
2432<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2433 </tr>
2434</table>
2435</div><div class="memdoc">
2436
2437<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00327">327</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2438
2439</div>
2440</div>
2441<a class="anchor" id="a0dade5bb9ed9aae49b6bb2875e273d89"></a>
2442<div class="memitem">
2443<div class="memproto">
2444<table class="mlabels">
2445 <tr>
2446 <td class="mlabels-left">
2447 <table class="memname">
2448 <tr>
2449 <td class="memname">int2 asymm_select_using_mask2 </td>
2450 <td>(</td>
2451 <td class="paramtype">int2&#160;</td>
2452 <td class="paramname"><em>if_mask</em>, </td>
2453 </tr>
2454 <tr>
2455 <td class="paramkey"></td>
2456 <td></td>
2457 <td class="paramtype">int2&#160;</td>
2458 <td class="paramname"><em>then_val</em>, </td>
2459 </tr>
2460 <tr>
2461 <td class="paramkey"></td>
2462 <td></td>
2463 <td class="paramtype">int2&#160;</td>
2464 <td class="paramname"><em>else_val</em>&#160;</td>
2465 </tr>
2466 <tr>
2467 <td></td>
2468 <td>)</td>
2469 <td></td><td></td>
2470 </tr>
2471 </table>
2472 </td>
2473 <td class="mlabels-right">
2474<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2475 </tr>
2476</table>
2477</div><div class="memdoc">
2478
2479<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00324">324</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2480
2481</div>
2482</div>
2483<a class="anchor" id="a44e4d74ed42006c4153a9cb6c97285de"></a>
2484<div class="memitem">
2485<div class="memproto">
2486<table class="mlabels">
2487 <tr>
2488 <td class="mlabels-left">
2489 <table class="memname">
2490 <tr>
2491 <td class="memname">int4 asymm_select_using_mask4 </td>
2492 <td>(</td>
2493 <td class="paramtype">int4&#160;</td>
2494 <td class="paramname"><em>if_mask</em>, </td>
2495 </tr>
2496 <tr>
2497 <td class="paramkey"></td>
2498 <td></td>
2499 <td class="paramtype">int4&#160;</td>
2500 <td class="paramname"><em>then_val</em>, </td>
2501 </tr>
2502 <tr>
2503 <td class="paramkey"></td>
2504 <td></td>
2505 <td class="paramtype">int4&#160;</td>
2506 <td class="paramname"><em>else_val</em>&#160;</td>
2507 </tr>
2508 <tr>
2509 <td></td>
2510 <td>)</td>
2511 <td></td><td></td>
2512 </tr>
2513 </table>
2514 </td>
2515 <td class="mlabels-right">
2516<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2517 </tr>
2518</table>
2519</div><div class="memdoc">
2520
2521<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00325">325</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2522
2523</div>
2524</div>
2525<a class="anchor" id="a64682bc22716ad771d012ce4c7398652"></a>
2526<div class="memitem">
2527<div class="memproto">
2528<table class="mlabels">
2529 <tr>
2530 <td class="mlabels-left">
2531 <table class="memname">
2532 <tr>
2533 <td class="memname">int8 asymm_select_using_mask8 </td>
2534 <td>(</td>
2535 <td class="paramtype">int8&#160;</td>
2536 <td class="paramname"><em>if_mask</em>, </td>
2537 </tr>
2538 <tr>
2539 <td class="paramkey"></td>
2540 <td></td>
2541 <td class="paramtype">int8&#160;</td>
2542 <td class="paramname"><em>then_val</em>, </td>
2543 </tr>
2544 <tr>
2545 <td class="paramkey"></td>
2546 <td></td>
2547 <td class="paramtype">int8&#160;</td>
2548 <td class="paramname"><em>else_val</em>&#160;</td>
2549 </tr>
2550 <tr>
2551 <td></td>
2552 <td>)</td>
2553 <td></td><td></td>
2554 </tr>
2555 </table>
2556 </td>
2557 <td class="mlabels-right">
2558<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2559 </tr>
2560</table>
2561</div><div class="memdoc">
2562
2563<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00326">326</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2564
2565</div>
2566</div>
2567<a class="anchor" id="a4bde4cd395697b5d37af5116773f16ed"></a>
2568<div class="memitem">
2569<div class="memproto">
2570<table class="mlabels">
2571 <tr>
2572 <td class="mlabels-left">
2573 <table class="memname">
2574 <tr>
2575 <td class="memname">int16 exp_barrel_shifter16 </td>
2576 <td>(</td>
2577 <td class="paramtype">int16&#160;</td>
2578 <td class="paramname"><em>result</em>, </td>
2579 </tr>
2580 <tr>
2581 <td class="paramkey"></td>
2582 <td></td>
2583 <td class="paramtype">int&#160;</td>
2584 <td class="paramname"><em>exponent</em>, </td>
2585 </tr>
2586 <tr>
2587 <td class="paramkey"></td>
2588 <td></td>
2589 <td class="paramtype">int&#160;</td>
2590 <td class="paramname"><em>fp_multiplier</em>, </td>
2591 </tr>
2592 <tr>
2593 <td class="paramkey"></td>
2594 <td></td>
2595 <td class="paramtype">int&#160;</td>
2596 <td class="paramname"><em>k_integer_bits</em>, </td>
2597 </tr>
2598 <tr>
2599 <td class="paramkey"></td>
2600 <td></td>
2601 <td class="paramtype">int&#160;</td>
2602 <td class="paramname"><em>k_fractional_bits</em>, </td>
2603 </tr>
2604 <tr>
2605 <td class="paramkey"></td>
2606 <td></td>
2607 <td class="paramtype">int16&#160;</td>
2608 <td class="paramname"><em>remainder</em>&#160;</td>
2609 </tr>
2610 <tr>
2611 <td></td>
2612 <td>)</td>
2613 <td></td><td></td>
2614 </tr>
2615 </table>
2616 </td>
2617 <td class="mlabels-right">
2618<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2619 </tr>
2620</table>
2621</div><div class="memdoc">
2622
2623<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00342">342</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2624
2625</div>
2626</div>
2627<a class="anchor" id="ad12110cc5f3099fa90b631e7b05772a0"></a>
2628<div class="memitem">
2629<div class="memproto">
2630<table class="mlabels">
2631 <tr>
2632 <td class="mlabels-left">
2633 <table class="memname">
2634 <tr>
2635 <td class="memname">int2 exp_barrel_shifter2 </td>
2636 <td>(</td>
2637 <td class="paramtype">int2&#160;</td>
2638 <td class="paramname"><em>result</em>, </td>
2639 </tr>
2640 <tr>
2641 <td class="paramkey"></td>
2642 <td></td>
2643 <td class="paramtype">int&#160;</td>
2644 <td class="paramname"><em>exponent</em>, </td>
2645 </tr>
2646 <tr>
2647 <td class="paramkey"></td>
2648 <td></td>
2649 <td class="paramtype">int&#160;</td>
2650 <td class="paramname"><em>fp_multiplier</em>, </td>
2651 </tr>
2652 <tr>
2653 <td class="paramkey"></td>
2654 <td></td>
2655 <td class="paramtype">int&#160;</td>
2656 <td class="paramname"><em>k_integer_bits</em>, </td>
2657 </tr>
2658 <tr>
2659 <td class="paramkey"></td>
2660 <td></td>
2661 <td class="paramtype">int&#160;</td>
2662 <td class="paramname"><em>k_fractional_bits</em>, </td>
2663 </tr>
2664 <tr>
2665 <td class="paramkey"></td>
2666 <td></td>
2667 <td class="paramtype">int2&#160;</td>
2668 <td class="paramname"><em>remainder</em>&#160;</td>
2669 </tr>
2670 <tr>
2671 <td></td>
2672 <td>)</td>
2673 <td></td><td></td>
2674 </tr>
2675 </table>
2676 </td>
2677 <td class="mlabels-right">
2678<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2679 </tr>
2680</table>
2681</div><div class="memdoc">
2682
2683<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00339">339</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2684
2685</div>
2686</div>
2687<a class="anchor" id="a521e3ded9b6ca69692e9415ef9b4cee1"></a>
2688<div class="memitem">
2689<div class="memproto">
2690<table class="mlabels">
2691 <tr>
2692 <td class="mlabels-left">
2693 <table class="memname">
2694 <tr>
2695 <td class="memname">int4 exp_barrel_shifter4 </td>
2696 <td>(</td>
2697 <td class="paramtype">int4&#160;</td>
2698 <td class="paramname"><em>result</em>, </td>
2699 </tr>
2700 <tr>
2701 <td class="paramkey"></td>
2702 <td></td>
2703 <td class="paramtype">int&#160;</td>
2704 <td class="paramname"><em>exponent</em>, </td>
2705 </tr>
2706 <tr>
2707 <td class="paramkey"></td>
2708 <td></td>
2709 <td class="paramtype">int&#160;</td>
2710 <td class="paramname"><em>fp_multiplier</em>, </td>
2711 </tr>
2712 <tr>
2713 <td class="paramkey"></td>
2714 <td></td>
2715 <td class="paramtype">int&#160;</td>
2716 <td class="paramname"><em>k_integer_bits</em>, </td>
2717 </tr>
2718 <tr>
2719 <td class="paramkey"></td>
2720 <td></td>
2721 <td class="paramtype">int&#160;</td>
2722 <td class="paramname"><em>k_fractional_bits</em>, </td>
2723 </tr>
2724 <tr>
2725 <td class="paramkey"></td>
2726 <td></td>
2727 <td class="paramtype">int4&#160;</td>
2728 <td class="paramname"><em>remainder</em>&#160;</td>
2729 </tr>
2730 <tr>
2731 <td></td>
2732 <td>)</td>
2733 <td></td><td></td>
2734 </tr>
2735 </table>
2736 </td>
2737 <td class="mlabels-right">
2738<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2739 </tr>
2740</table>
2741</div><div class="memdoc">
2742
2743<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00340">340</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2744
2745</div>
2746</div>
2747<a class="anchor" id="a936aed524c644efcf20b28877e3a0f3f"></a>
2748<div class="memitem">
2749<div class="memproto">
2750<table class="mlabels">
2751 <tr>
2752 <td class="mlabels-left">
2753 <table class="memname">
2754 <tr>
2755 <td class="memname">int8 exp_barrel_shifter8 </td>
2756 <td>(</td>
2757 <td class="paramtype">int8&#160;</td>
2758 <td class="paramname"><em>result</em>, </td>
2759 </tr>
2760 <tr>
2761 <td class="paramkey"></td>
2762 <td></td>
2763 <td class="paramtype">int&#160;</td>
2764 <td class="paramname"><em>exponent</em>, </td>
2765 </tr>
2766 <tr>
2767 <td class="paramkey"></td>
2768 <td></td>
2769 <td class="paramtype">int&#160;</td>
2770 <td class="paramname"><em>fp_multiplier</em>, </td>
2771 </tr>
2772 <tr>
2773 <td class="paramkey"></td>
2774 <td></td>
2775 <td class="paramtype">int&#160;</td>
2776 <td class="paramname"><em>k_integer_bits</em>, </td>
2777 </tr>
2778 <tr>
2779 <td class="paramkey"></td>
2780 <td></td>
2781 <td class="paramtype">int&#160;</td>
2782 <td class="paramname"><em>k_fractional_bits</em>, </td>
2783 </tr>
2784 <tr>
2785 <td class="paramkey"></td>
2786 <td></td>
2787 <td class="paramtype">int8&#160;</td>
2788 <td class="paramname"><em>remainder</em>&#160;</td>
2789 </tr>
2790 <tr>
2791 <td></td>
2792 <td>)</td>
2793 <td></td><td></td>
2794 </tr>
2795 </table>
2796 </td>
2797 <td class="mlabels-right">
2798<span class="mlabels"><span class="mlabel">inline</span></span> </td>
2799 </tr>
2800</table>
2801</div><div class="memdoc">
2802
2803<p>Definition at line <a class="el" href="helpers__asymm_8h_source.xhtml#l00341">341</a> of file <a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>.</p>
2804
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002805</div>
2806</div>
2807</div><!-- contents -->
2808</div><!-- doc-content -->
2809<!-- start footer part -->
2810<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
2811 <ul>
2812 <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.xhtml">core</a></li><li class="navelem"><a class="el" href="dir_8c278f79c760e5c5fbd911f9870614c1.xhtml">CL</a></li><li class="navelem"><a class="el" href="dir_25885286e9dad4fa105b7b25a8031bbf.xhtml">cl_kernels</a></li><li class="navelem"><a class="el" href="helpers__asymm_8h.xhtml">helpers_asymm.h</a></li>
Anthony Barbier06ea0482018-02-22 15:45:35 +00002813 <li class="footer">Generated on Thu Feb 22 2018 15:45:22 for Compute Library by
Anthony Barbier8140e1e2017-12-14 23:48:46 +00002814 <a href="http://www.doxygen.org/index.html">
2815 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
2816 </ul>
2817</div>
2818</body>
2819</html>