arm_compute v18.02
Change-Id: I7207aa488e5470f235f39b6c188b4678dc38d1a6
diff --git a/documentation/softmax__layer__quantized_8cl.xhtml b/documentation/softmax__layer__quantized_8cl.xhtml
index acdc86f..0d596e1 100644
--- a/documentation/softmax__layer__quantized_8cl.xhtml
+++ b/documentation/softmax__layer__quantized_8cl.xhtml
@@ -40,7 +40,7 @@
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Compute Library
-  <span id="projectnumber">18.01</span>
+  <span id="projectnumber">18.02</span>
</div>
</td>
</tr>
@@ -115,14 +115,12 @@
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> |
-<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">softmax_layer_quantized.cl File Reference</div> </div>
</div><!--header-->
<div class="contents">
-<div class="textblock"><code>#include "<a class="el" href="asymm__helper_8h_source.xhtml">asymm_helper.h</a>"</code><br />
-<code>#include "<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>"</code><br />
+<div class="textblock"><code>#include "<a class="el" href="helpers__asymm_8h_source.xhtml">helpers_asymm.h</a>"</code><br />
</div>
<p><a href="softmax__layer__quantized_8cl_source.xhtml">Go to the source code of this file.</a></p>
<table class="memberdecls">
@@ -132,19 +130,29 @@
<tr class="separator:abaa48ad818c44e415fd3f9dd0f27bf01"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a44206a4e5783c7aabacec88aad878c88"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a44206a4e5783c7aabacec88aad878c88">ADD_OP</a>(x, y, type, <a class="el" href="hwc_8hpp.xhtml#ab2c6b258f02add8fdf4cfc7c371dd772">size</a>)   ((x) + (y))</td></tr>
<tr class="separator:a44206a4e5783c7aabacec88aad878c88"><td class="memSeparator" colspan="2"> </td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr class="memitem:a79bd9092e1a23c550d4dc1aeb9b746ad"><td class="memItemLeft" align="right" valign="top">__kernel void </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a79bd9092e1a23c550d4dc1aeb9b746ad">softmax_layer_max_quantized</a> (__global uchar *src_ptr, uint src_stride_x, uint src_step_x, uint src_stride_y, uint src_step_y, uint src_stride_z, uint src_step_z, uint src_offset_first_element_in_bytes, __global uchar *dst_ptr, uint dst_stride_x, uint dst_step_x, uint dst_stride_y, uint dst_step_y, uint dst_stride_z, uint dst_step_z, uint dst_offset_first_element_in_bytes, uint width)</td></tr>
-<tr class="memdesc:a79bd9092e1a23c550d4dc1aeb9b746ad"><td class="mdescLeft"> </td><td class="mdescRight">Identifies the maximum value across the 1st dimension. <a href="#a79bd9092e1a23c550d4dc1aeb9b746ad">More...</a><br /></td></tr>
-<tr class="separator:a79bd9092e1a23c550d4dc1aeb9b746ad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a08246606c233e7785a497c09672f366f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a08246606c233e7785a497c09672f366f">GRID_SIZE</a>   1</td></tr>
+<tr class="separator:a08246606c233e7785a497c09672f366f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a7c78836761fa3b5b124efea237dac70f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>   16</td></tr>
+<tr class="separator:a7c78836761fa3b5b124efea237dac70f"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a372393c380805985b813dbb16d589a64"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a372393c380805985b813dbb16d589a64">LOG_VECTOR_SIZE</a>   4</td></tr>
+<tr class="separator:a372393c380805985b813dbb16d589a64"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a525a42d38133b1051b8924b456add4a1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a525a42d38133b1051b8924b456add4a1">asymm_mult</a>(a, b)   <a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(a, b, 16)</td></tr>
+<tr class="separator:a525a42d38133b1051b8924b456add4a1"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a54aedfa17c5ac2567107d5f488b0f4af"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a54aedfa17c5ac2567107d5f488b0f4af">asymm_exp_on_negative_values</a>(a, k_integer_bits)   <a class="el" href="helpers__asymm_8h.xhtml#a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8">ASYMM_EXP_ON_NEGATIVE_VALUES</a>(a, k_integer_bits, 16)</td></tr>
+<tr class="separator:a54aedfa17c5ac2567107d5f488b0f4af"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:ad57ea340cdcfeb2e1375b70c3ae59bae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#ad57ea340cdcfeb2e1375b70c3ae59bae">asymm_rescale</a>(<a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, src_integer_bits, dst_integer_bits)   <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, 16)</td></tr>
+<tr class="separator:ad57ea340cdcfeb2e1375b70c3ae59bae"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:af5987b09a234231612b2b1eded343025"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#af5987b09a234231612b2b1eded343025">VEC_UCHAR</a>   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(uchar, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td></tr>
+<tr class="separator:af5987b09a234231612b2b1eded343025"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:a16110bd2b92003141dbaf8a44498ff82"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a16110bd2b92003141dbaf8a44498ff82">VEC_UINT</a>   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(uint, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td></tr>
+<tr class="separator:a16110bd2b92003141dbaf8a44498ff82"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aee190caf3b3571e939ac129e12c368cd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#aee190caf3b3571e939ac129e12c368cd">VEC_INT</a>   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(int, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td></tr>
+<tr class="separator:aee190caf3b3571e939ac129e12c368cd"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
-<tr class="memitem:a4701bcd6d0c0472d7d3e8017a24f2be6"><td class="memItemLeft" align="right" valign="top">__constant uchar16 </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a4701bcd6d0c0472d7d3e8017a24f2be6">type_min</a> = 0</td></tr>
-<tr class="separator:a4701bcd6d0c0472d7d3e8017a24f2be6"><td class="memSeparator" colspan="2"> </td></tr>
-<tr class="memitem:a0712735973f172ac9efc7d48a31e47ad"><td class="memItemLeft" align="right" valign="top">__constant uint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#a0712735973f172ac9efc7d48a31e47ad">idx16</a> = (uint16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td></tr>
-<tr class="separator:a0712735973f172ac9efc7d48a31e47ad"><td class="memSeparator" colspan="2"> </td></tr>
+<tr class="memitem:aa1dd94b8d98f1c6d790bdf0fc5de29e9"><td class="memItemLeft" align="right" valign="top">__constant uint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="softmax__layer__quantized_8cl.xhtml#aa1dd94b8d98f1c6d790bdf0fc5de29e9">idx__</a> = (uint16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td></tr>
+<tr class="separator:aa1dd94b8d98f1c6d790bdf0fc5de29e9"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a44206a4e5783c7aabacec88aad878c88"></a>
@@ -183,9 +191,125 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00028">28</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00027">27</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
-<p>Referenced by <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">softmax_layer_max_quantized()</a>.</p>
+</div>
+</div>
+<a class="anchor" id="a54aedfa17c5ac2567107d5f488b0f4af"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define asymm_exp_on_negative_values</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">k_integer_bits </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>   <a class="el" href="helpers__asymm_8h.xhtml#a3a4f1b5d8f1cd67ac31bc62c9a6f4aa8">ASYMM_EXP_ON_NEGATIVE_VALUES</a>(a, k_integer_bits, 16)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00057">57</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a525a42d38133b1051b8924b456add4a1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define asymm_mult</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">b </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>   <a class="el" href="helpers__asymm_8h.xhtml#a5483aefd5e07244661178bfd3f434448">ASYMM_MULT</a>(a, b, 16)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00056">56</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad57ea340cdcfeb2e1375b70c3ae59bae"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define asymm_rescale</td>
+ <td>(</td>
+ <td class="paramtype"> </td>
+ <td class="paramname"><a class="el" href="hwc_8hpp.xhtml#a0f61d63b009d0880a89c843bd50d8d76">value</a>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">src_integer_bits, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"> </td>
+ <td class="paramname">dst_integer_bits </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>   <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, 16)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00058">58</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a08246606c233e7785a497c09672f366f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GRID_SIZE   1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00031">31</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a372393c380805985b813dbb16d589a64"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define LOG_VECTOR_SIZE   4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00054">54</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
</div>
</div>
@@ -225,197 +349,78 @@
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00027">27</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
-
-<p>Referenced by <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">softmax_layer_max_quantized()</a>.</p>
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00026">26</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
</div>
</div>
-<h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a79bd9092e1a23c550d4dc1aeb9b746ad"></a>
+<a class="anchor" id="aee190caf3b3571e939ac129e12c368cd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">__kernel void softmax_layer_max_quantized </td>
- <td>(</td>
- <td class="paramtype">__global uchar * </td>
- <td class="paramname"><em>src_ptr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_stride_x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_step_x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_stride_y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_step_y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_stride_z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_step_z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>src_offset_first_element_in_bytes</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">__global uchar * </td>
- <td class="paramname"><em>dst_ptr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_stride_x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_step_x</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_stride_y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_step_y</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_stride_z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_step_z</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>dst_offset_first_element_in_bytes</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">uint </td>
- <td class="paramname"><em>width</em> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
+ <td class="memname">#define VEC_INT   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(int, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Identifies the maximum value across the 1st dimension. </p>
-<dl class="section note"><dt>Note</dt><dd>In case the input is not multiple of 16 -DNON_MULTIPLE_OF_16 must be passed.</dd></dl>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">src_ptr</td><td>Pointer to the source tensor slice. Supported data types: QASYMM8 </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_x</td><td>Stride of the source tensor in X dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_step_x</td><td>src_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_y</td><td>Stride of the source tensor in Y dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_step_y</td><td>src_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_z</td><td>Stride of the source tensor in Z dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_step_z</td><td>src_stride_z * number of elements along Z processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">src_offset_first_element_in_bytes</td><td>The offset of the first element in the source tensor </td></tr>
- <tr><td class="paramdir">[out]</td><td class="paramname">dst_ptr</td><td>Pointer to the destination tensor slice. Supported data types: same as <code>src_ptr</code> </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_stride_x</td><td>Stride of the destination tensor in X dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_step_x</td><td>dst_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_stride_y</td><td>Stride of the destination tensor in Y dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_step_y</td><td>dst_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_stride_z</td><td>Stride of the destination tensor in Z dimension (in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_step_z</td><td>dst_stride_z * number of elements along Z processed per workitem(in bytes) </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">dst_offset_first_element_in_bytes</td><td>The offset of the first element in the destination tensor </td></tr>
- <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>Input image width </td></tr>
- </table>
- </dd>
-</dl>
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00064">64</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
-<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">55</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+</div>
+</div>
+<a class="anchor" id="af5987b09a234231612b2b1eded343025"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VEC_UCHAR   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(uchar, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
-<p>References <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00028">ADD_OP</a>, <a class="el" href="asymm__helper_8h_source.xhtml#l00200">asymm_exp_on_negative_values()</a>, <a class="el" href="asymm__helper_8h_source.xhtml#l00167">asymm_mult()</a>, <a class="el" href="asymm__helper_8h_source.xhtml#l00243">asymm_one_over_one_plus_x_for_x_in_0_1()</a>, <a class="el" href="asymm__helper_8h_source.xhtml#l00269">asymm_rescale()</a>, <a class="el" href="asymm__helper_8h_source.xhtml#l00082">asymm_rounding_divide_by_pow2()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00276">arm_compute::test::fixed_point_arithmetic::detail::clz()</a>, <a class="el" href="helpers_8h_source.xhtml#l00114">CONVERT_TENSOR3D_TO_IMAGE_STRUCT</a>, <a class="el" href="helpers_8h_source.xhtml#l00111">CONVERT_TENSOR3D_TO_IMAGE_STRUCT_NO_STEP</a>, <a class="el" href="_c_l_2_convolution_8cpp_source.xhtml#l00123">arm_compute::test::validation::dst</a>, <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00031">idx16</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00889">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00027">MAX_OP</a>, <a class="el" href="helpers_8h_source.xhtml#l00301">offset()</a>, <a class="el" href="helpers_8h_source.xhtml#l00142">Image::ptr</a>, <a class="el" href="_c_l_2_convolution_8cpp_source.xhtml#l00133">arm_compute::test::validation::src</a>, <a class="el" href="reduction__operation_8cl_source.xhtml#l00052">sum()</a>, <a class="el" href="helpers_8h_source.xhtml#l00074">TENSOR3D_DECLARATION</a>, and <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00030">type_min</a>.</p>
-<div class="fragment"><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="struct_image.xhtml">Image</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a6743f0a130e8311e6f5b1a23df102472">src</a> = <a class="code" href="helpers_8h.xhtml#a541f8db866a0fa93ee67d58ea31a7d0c">CONVERT_TENSOR3D_TO_IMAGE_STRUCT</a>(src);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_image.xhtml">Image</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">dst</a> = <a class="code" href="helpers_8h.xhtml#a541f8db866a0fa93ee67d58ea31a7d0c">CONVERT_TENSOR3D_TO_IMAGE_STRUCT</a>(dst);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="comment">// Initialize local maximum</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  uchar16 max_val = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Calculate max of row</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">const</span> uint width4 = width >> 4;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span>(uint i = 0; i < width4; i++)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  uchar16 data = vload16(0, (__global uchar *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&src, i << 4, 0));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  max_val = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(data, max_val, uchar, 16);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#ifdef NON_MULTIPLE_OF_16</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Handle non multiple of 16</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  uchar16 data = vload16(0, (__global uchar *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&src, width4 << 4, 0));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  uchar16 widx = convert_uchar16(((uint16)(width4 << 4) + <a class="code" href="softmax__layer__quantized_8cl.xhtml#a0712735973f172ac9efc7d48a31e47ad">idx16</a>) < width);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  max_val = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(max_val, select(<a class="code" href="softmax__layer__quantized_8cl.xhtml#a4701bcd6d0c0472d7d3e8017a24f2be6">type_min</a>, data, widx), uchar, 16);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif </span><span class="comment">/* NON_MULTIPLE_OF_16 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Perform max reduction</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  max_val.s01234567 = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(max_val.s01234567, max_val.s89ABCDEF, uchar, 8);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  max_val.s0123 = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(max_val.s0123, max_val.s4567, uchar, 4);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  max_val.s01 = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(max_val.s01, max_val.s23, uchar, 2);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  max_val.s0 = <a class="code" href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a>(max_val.s0, max_val.s1, uchar, 1);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="comment">// Store result</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  *((__global uchar *)dst.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>) = max_val.s0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="ttc" id="softmax__layer__quantized_8cl_xhtml_a4701bcd6d0c0472d7d3e8017a24f2be6"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#a4701bcd6d0c0472d7d3e8017a24f2be6">type_min</a></div><div class="ttdeci">__constant uchar16 type_min</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00030">softmax_layer_quantized.cl:30</a></div></div>
-<div class="ttc" id="softmax__layer__quantized_8cl_xhtml_abaa48ad818c44e415fd3f9dd0f27bf01"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#abaa48ad818c44e415fd3f9dd0f27bf01">MAX_OP</a></div><div class="ttdeci">#define MAX_OP(x, y, type, size)</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00027">softmax_layer_quantized.cl:27</a></div></div>
-<div class="ttc" id="helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00301">helpers.h:301</a></div></div>
-<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_adbf67dcee294e673cf796f1ed8aeb6a4"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#adbf67dcee294e673cf796f1ed8aeb6a4">arm_compute::test::validation::dst</a></div><div class="ttdeci">CLTensor dst</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_convolution_8cpp_source.xhtml#l00123">Convolution.cpp:123</a></div></div>
-<div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00140">helpers.h:140</a></div></div>
-<div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00142">helpers.h:142</a></div></div>
-<div class="ttc" id="helpers_8h_xhtml_a541f8db866a0fa93ee67d58ea31a7d0c"><div class="ttname"><a href="helpers_8h.xhtml#a541f8db866a0fa93ee67d58ea31a7d0c">CONVERT_TENSOR3D_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TENSOR3D_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00114">helpers.h:114</a></div></div>
-<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a6743f0a130e8311e6f5b1a23df102472"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a6743f0a130e8311e6f5b1a23df102472">arm_compute::test::validation::src</a></div><div class="ttdeci">convolution configure & src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_convolution_8cpp_source.xhtml#l00133">Convolution.cpp:133</a></div></div>
-<div class="ttc" id="softmax__layer__quantized_8cl_xhtml_a0712735973f172ac9efc7d48a31e47ad"><div class="ttname"><a href="softmax__layer__quantized_8cl.xhtml#a0712735973f172ac9efc7d48a31e47ad">idx16</a></div><div class="ttdeci">__constant uint16 idx16</div><div class="ttdef"><b>Definition:</b> <a href="softmax__layer__quantized_8cl_source.xhtml#l00031">softmax_layer_quantized.cl:31</a></div></div>
-</div><!-- fragment -->
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00062">62</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a16110bd2b92003141dbaf8a44498ff82"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VEC_UINT   <a class="el" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(uint, <a class="el" href="softmax__layer__quantized_8cl.xhtml#a7c78836761fa3b5b124efea237dac70f">VECTOR_SIZE</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00063">63</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7c78836761fa3b5b124efea237dac70f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VECTOR_SIZE   16</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00053">53</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
+
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
-<a class="anchor" id="a0712735973f172ac9efc7d48a31e47ad"></a>
+<a class="anchor" id="aa1dd94b8d98f1c6d790bdf0fc5de29e9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">__constant uint16 idx16 = (uint16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td>
+ <td class="memname">__constant uint16 idx__ = (uint16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00031">31</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
-
-<p>Referenced by <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">softmax_layer_max_quantized()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a4701bcd6d0c0472d7d3e8017a24f2be6"></a>
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">__constant uchar16 type_min = 0</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00030">30</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
-
-<p>Referenced by <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">softmax_layer_max_quantized()</a>.</p>
+<p>Definition at line <a class="el" href="softmax__layer__quantized_8cl_source.xhtml#l00055">55</a> of file <a class="el" href="softmax__layer__quantized_8cl_source.xhtml">softmax_layer_quantized.cl</a>.</p>
</div>
</div>
@@ -425,7 +430,7 @@
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<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="softmax__layer__quantized_8cl.xhtml">softmax_layer_quantized.cl</a></li>
- <li class="footer">Generated on Wed Jan 24 2018 14:30:43 for Compute Library by
+ <li class="footer">Generated on Thu Feb 22 2018 15:45:22 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
</ul>