arm_compute v18.01
Change-Id: I9bfa178c2e38bfd5fc812e62aab6760d87748e05
diff --git a/documentation/softmax__layer__quantized_8cl.xhtml b/documentation/softmax__layer__quantized_8cl.xhtml
index 7697207..acdc86f 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">17.12</span>
+  <span id="projectnumber">18.01</span>
</div>
</td>
</tr>
@@ -373,14 +373,15 @@
<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>
-<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="validation_2_n_e_o_n_2_g_e_m_m_8cpp_source.xhtml#l00118">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="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> src = <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>
+<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">Tensor dst</div><div class="ttdef"><b>Definition:</b> <a href="validation_2_n_e_o_n_2_g_e_m_m_8cpp_source.xhtml#l00118">GEMM.cpp:118</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 -->
</div>
@@ -424,7 +425,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 Thu Dec 14 2017 23:48:34 for Compute Library by
+ <li class="footer">Generated on Wed Jan 24 2018 14:30:43 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>