arm_compute v18.05
[platform/upstream/armcl.git] / documentation / minmaxloc_8cl.xhtml
1 <!-- 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/minmaxloc.cl 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
43    &#160;<span id="projectnumber">18.05</span>
44    </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">
53 var 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('minmaxloc_8cl.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> &#124;
119 <a href="#var-members">Variables</a>  </div>
120   <div class="headertitle">
121 <div class="title">minmaxloc.cl File Reference</div>  </div>
122 </div><!--header-->
123 <div class="contents">
124 <div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
125 <code>#include &quot;<a class="el" href="types_8h_source.xhtml">types.h</a>&quot;</code><br />
126 </div>
127 <p><a href="minmaxloc_8cl_source.xhtml">Go to the source code of this file.</a></p>
128 <table class="memberdecls">
129 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
130 Macros</h2></td></tr>
131 <tr class="memitem:a17decce255d6f94a60379a61a54e3bac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a17decce255d6f94a60379a61a54e3bac">DATA_TYPE_MIN</a>&#160;&#160;&#160;0x0</td></tr>
132 <tr class="separator:a17decce255d6f94a60379a61a54e3bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:afa6b114aa46a23bb226c5c9547f9f623"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#afa6b114aa46a23bb226c5c9547f9f623">DATA_TYPE_MAX</a>&#160;&#160;&#160;0xFF</td></tr>
134 <tr class="separator:afa6b114aa46a23bb226c5c9547f9f623"><td class="memSeparator" colspan="2">&#160;</td></tr>
135 </table><table class="memberdecls">
136 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
137 Functions</h2></td></tr>
138 <tr class="memitem:a061903419fb2aff60da86e674c76b96e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a061903419fb2aff60da86e674c76b96e">FloatFlip</a> (float val)</td></tr>
139 <tr class="separator:a061903419fb2aff60da86e674c76b96e"><td class="memSeparator" colspan="2">&#160;</td></tr>
140 <tr class="memitem:a39543da04d64203794856acc059d6345"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a39543da04d64203794856acc059d6345">minmax</a> (__global uchar *src_ptr, uint src_stride_x, uint src_step_x, uint src_stride_y, uint src_step_y, uint src_offset_first_element_in_bytes, __global int *min_max, int width)</td></tr>
141 <tr class="memdesc:a39543da04d64203794856acc059d6345"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function identifies the min and maximum value of an input image.  <a href="#a39543da04d64203794856acc059d6345">More...</a><br /></td></tr>
142 <tr class="separator:a39543da04d64203794856acc059d6345"><td class="memSeparator" colspan="2">&#160;</td></tr>
143 <tr class="memitem:a31ce1a75df24b2037dc76f1748236579"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a31ce1a75df24b2037dc76f1748236579">minmaxloc</a> (__global uchar *src_ptr, uint src_stride_x, uint src_step_x, uint src_stride_y, uint src_step_y, uint src_offset_first_element_in_bytes, __global int *min_max, __global uint *min_max_count, __global <a class="el" href="struct_coordinates2_d.xhtml">Coordinates2D</a> *min_loc, uint max_min_loc_count, __global <a class="el" href="struct_coordinates2_d.xhtml">Coordinates2D</a> *max_loc, uint max_max_loc_count)</td></tr>
144 <tr class="memdesc:a31ce1a75df24b2037dc76f1748236579"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function counts the min and max occurrences in an image and tags their position.  <a href="#a31ce1a75df24b2037dc76f1748236579">More...</a><br /></td></tr>
145 <tr class="separator:a31ce1a75df24b2037dc76f1748236579"><td class="memSeparator" colspan="2">&#160;</td></tr>
146 </table><table class="memberdecls">
147 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
148 Variables</h2></td></tr>
149 <tr class="memitem:a538b4b63f40e7b12891774e03a4f0dec"><td class="memItemLeft" align="right" valign="top">__constant DATA_TYPE16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a538b4b63f40e7b12891774e03a4f0dec">type_min</a> = ( DATA_TYPE16 )( 0x0 )</td></tr>
150 <tr class="separator:a538b4b63f40e7b12891774e03a4f0dec"><td class="memSeparator" colspan="2">&#160;</td></tr>
151 <tr class="memitem:a4464d6f922ea17b4a9ca6a2cec7ddb75"><td class="memItemLeft" align="right" valign="top">__constant DATA_TYPE16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a4464d6f922ea17b4a9ca6a2cec7ddb75">type_max</a> = ( DATA_TYPE16 )( 0xFF )</td></tr>
152 <tr class="separator:a4464d6f922ea17b4a9ca6a2cec7ddb75"><td class="memSeparator" colspan="2">&#160;</td></tr>
153 <tr class="memitem:a5a67e1e00d711339bef1e10f0984227c"><td class="memItemLeft" align="right" valign="top">__constant int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="minmaxloc_8cl.xhtml#a5a67e1e00d711339bef1e10f0984227c">idx16</a> = (int16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td></tr>
154 <tr class="separator:a5a67e1e00d711339bef1e10f0984227c"><td class="memSeparator" colspan="2">&#160;</td></tr>
155 </table>
156 <h2 class="groupheader">Macro Definition Documentation</h2>
157 <a class="anchor" id="afa6b114aa46a23bb226c5c9547f9f623"></a>
158 <div class="memitem">
159 <div class="memproto">
160       <table class="memname">
161         <tr>
162           <td class="memname">#define DATA_TYPE_MAX&#160;&#160;&#160;0xFF</td>
163         </tr>
164       </table>
165 </div><div class="memdoc">
166
167 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00032">32</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
168
169 </div>
170 </div>
171 <a class="anchor" id="a17decce255d6f94a60379a61a54e3bac"></a>
172 <div class="memitem">
173 <div class="memproto">
174       <table class="memname">
175         <tr>
176           <td class="memname">#define DATA_TYPE_MIN&#160;&#160;&#160;0x0</td>
177         </tr>
178       </table>
179 </div><div class="memdoc">
180
181 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00028">28</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
182
183 </div>
184 </div>
185 <h2 class="groupheader">Function Documentation</h2>
186 <a class="anchor" id="a061903419fb2aff60da86e674c76b96e"></a>
187 <div class="memitem">
188 <div class="memproto">
189 <table class="mlabels">
190   <tr>
191   <td class="mlabels-left">
192       <table class="memname">
193         <tr>
194           <td class="memname">int FloatFlip </td>
195           <td>(</td>
196           <td class="paramtype">float&#160;</td>
197           <td class="paramname"><em>val</em></td><td>)</td>
198           <td></td>
199         </tr>
200       </table>
201   </td>
202   <td class="mlabels-right">
203 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
204   </tr>
205 </table>
206 </div><div class="memdoc">
207
208 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00035">35</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
209
210 <p>Referenced by <a class="el" href="minmaxloc_8cl_source.xhtml#l00065">minmax()</a>.</p>
211 <div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <span class="keyword">union</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    {</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;        <span class="keywordtype">int</span>   int_val;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="keywordtype">float</span> flt_val;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;    } u_val;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;    u_val.flt_val = val;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;    <span class="keywordflow">return</span> (u_val.int_val &gt;= 0) ? u_val.int_val : u_val.int_val ^ 0x7FFFFFFF;</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;}</div></div><!-- fragment -->
212 </div>
213 </div>
214 <a class="anchor" id="a39543da04d64203794856acc059d6345"></a>
215 <div class="memitem">
216 <div class="memproto">
217       <table class="memname">
218         <tr>
219           <td class="memname">__kernel void minmax </td>
220           <td>(</td>
221           <td class="paramtype">__global uchar *&#160;</td>
222           <td class="paramname"><em>src_ptr</em>, </td>
223         </tr>
224         <tr>
225           <td class="paramkey"></td>
226           <td></td>
227           <td class="paramtype">uint&#160;</td>
228           <td class="paramname"><em>src_stride_x</em>, </td>
229         </tr>
230         <tr>
231           <td class="paramkey"></td>
232           <td></td>
233           <td class="paramtype">uint&#160;</td>
234           <td class="paramname"><em>src_step_x</em>, </td>
235         </tr>
236         <tr>
237           <td class="paramkey"></td>
238           <td></td>
239           <td class="paramtype">uint&#160;</td>
240           <td class="paramname"><em>src_stride_y</em>, </td>
241         </tr>
242         <tr>
243           <td class="paramkey"></td>
244           <td></td>
245           <td class="paramtype">uint&#160;</td>
246           <td class="paramname"><em>src_step_y</em>, </td>
247         </tr>
248         <tr>
249           <td class="paramkey"></td>
250           <td></td>
251           <td class="paramtype">uint&#160;</td>
252           <td class="paramname"><em>src_offset_first_element_in_bytes</em>, </td>
253         </tr>
254         <tr>
255           <td class="paramkey"></td>
256           <td></td>
257           <td class="paramtype">__global int *&#160;</td>
258           <td class="paramname"><em>min_max</em>, </td>
259         </tr>
260         <tr>
261           <td class="paramkey"></td>
262           <td></td>
263           <td class="paramtype">int&#160;</td>
264           <td class="paramname"><em>width</em>&#160;</td>
265         </tr>
266         <tr>
267           <td></td>
268           <td>)</td>
269           <td></td><td></td>
270         </tr>
271       </table>
272 </div><div class="memdoc">
273
274 <p>This function identifies the min and maximum value of an input image. </p>
275 <dl class="section note"><dt>Note</dt><dd>Input image data type must be passed as a preprocessor argument using -DDATA_TYPE. Moreover, the minimum and maximum value of the given data type must be provided using -DDATA_TYPE_MIN and -DDATA_TYPE_MAX respectively. </dd>
276 <dd>
277 In case image width is not a multiple of 16 then -DNON_MULTIPLE_OF_16 must be passed.</dd></dl>
278 <dl class="params"><dt>Parameters</dt><dd>
279   <table class="params">
280     <tr><td class="paramdir">[in]</td><td class="paramname">src_ptr</td><td>Pointer to the source image. Supported data types: U8 </td></tr>
281     <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
282     <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>
283     <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
284     <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>
285     <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 image </td></tr>
286     <tr><td class="paramdir">[out]</td><td class="paramname">min_max</td><td>Pointer to buffer with minimum value in position 0 and maximum value in position 1 </td></tr>
287     <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>Input image width </td></tr>
288   </table>
289   </dd>
290 </dl>
291
292 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00065">65</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
293
294 <p>References <a class="el" href="fixed__point_8h_source.xhtml#l00098">CONVERT</a>, <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="minmaxloc_8cl_source.xhtml#l00035">FloatFlip()</a>, <a class="el" href="minmaxloc_8cl_source.xhtml#l00048">idx16</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">arm_compute::test::fixed_point_arithmetic::detail::max()</a>, <a class="el" href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">arm_compute::test::fixed_point_arithmetic::detail::min()</a>, <a class="el" href="helpers_8h_source.xhtml#l00303">offset()</a>, <a class="el" href="minmaxloc_8cl_source.xhtml#l00047">type_max</a>, <a class="el" href="minmaxloc_8cl_source.xhtml#l00046">type_min</a>, and <a class="el" href="fixed__point_8h_source.xhtml#l00093">VEC_DATA_TYPE</a>.</p>
295 <div class="fragment"><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <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#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="comment">// Initialize local minimum and local maximum</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 16)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    local_min = <a class="code" href="minmaxloc_8cl.xhtml#a4464d6f922ea17b4a9ca6a2cec7ddb75">type_max</a>;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 16)</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    local_max = <a class="code" href="minmaxloc_8cl.xhtml#a538b4b63f40e7b12891774e03a4f0dec">type_min</a>;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="comment">// Calculate min/max of row</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    for(; i + 16 &lt;= width; i += 16)</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    {</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 16)</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        data      = vload16(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src, i, 0));</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        local_min = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(data, local_min);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        local_max = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(data, local_max);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    }</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">#ifdef NON_MULTIPLE_OF_16</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="comment">// Handle non multiple of 16</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 16)</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    data = vload16(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src, i, 0));</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#ifdef IS_DATA_TYPE_FLOAT</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    int16 valid_indices = (i + <a class="code" href="minmaxloc_8cl.xhtml#a5a67e1e00d711339bef1e10f0984227c">idx16</a>) &lt; width;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="preprocessor">#else  </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 16)</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    valid_indices = <a class="code" href="fixed__point_8h.xhtml#aa8d95ba04fc73845abc6045952cae5be">CONVERT</a>((i + <a class="code" href="minmaxloc_8cl.xhtml#a5a67e1e00d711339bef1e10f0984227c">idx16</a>) &lt; width, <a class="code" href="fixed__point_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 16));</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    local_max = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(local_max, select(type_min, data, valid_indices));</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    local_min = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(local_min, select(type_max, data, valid_indices));</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* NON_MULTIPLE_OF_16 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// Perform min/max reduction</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    local_min.s01234567 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(local_min.s01234567, local_min.s89ABCDEF);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    local_max.s01234567 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(local_max.s01234567, local_max.s89ABCDEF);</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    local_min.s0123 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(local_min.s0123, local_min.s4567);</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    local_max.s0123 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(local_max.s0123, local_max.s4567);</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    local_min.s01 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(local_min.s01, local_min.s23);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    local_max.s01 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(local_max.s01, local_max.s23);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    local_min.s0 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">min</a>(local_min.s0, local_min.s1);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    local_max.s0 = <a class="code" href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">max</a>(local_max.s0, local_max.s1);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="comment">// Update global min/max</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">#ifdef IS_DATA_TYPE_FLOAT</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    atomic_min(&amp;min_max[0], <a class="code" href="minmaxloc_8cl.xhtml#a061903419fb2aff60da86e674c76b96e">FloatFlip</a>(local_min.s0));</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    atomic_max(&amp;min_max[1], <a class="code" href="minmaxloc_8cl.xhtml#a061903419fb2aff60da86e674c76b96e">FloatFlip</a>(local_max.s0));</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#else  </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    atomic_min(&amp;min_max[0], local_min.s0);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    atomic_max(&amp;min_max[1], local_max.s0);</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;}</div><div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_aabcf39e3917f842dbc5fbb0d802f24d5"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#aabcf39e3917f842dbc5fbb0d802f24d5">arm_compute::test::fixed_point_arithmetic::detail::min</a></div><div class="ttdeci">fixed_point&lt; T &gt; min(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00897">FixedPoint.h:897</a></div></div>
296 <div class="ttc" id="fixed__point_8h_xhtml_aa8d95ba04fc73845abc6045952cae5be"><div class="ttname"><a href="fixed__point_8h.xhtml#aa8d95ba04fc73845abc6045952cae5be">CONVERT</a></div><div class="ttdeci">#define CONVERT(x, type)</div><div class="ttdef"><b>Definition:</b> <a href="fixed__point_8h_source.xhtml#l00098">fixed_point.h:98</a></div></div>
297 <div class="ttc" id="minmaxloc_8cl_xhtml_a5a67e1e00d711339bef1e10f0984227c"><div class="ttname"><a href="minmaxloc_8cl.xhtml#a5a67e1e00d711339bef1e10f0984227c">idx16</a></div><div class="ttdeci">__constant int16 idx16</div><div class="ttdef"><b>Definition:</b> <a href="minmaxloc_8cl_source.xhtml#l00048">minmaxloc.cl:48</a></div></div>
298 <div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
299 <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#l00303">helpers.h:303</a></div></div>
300 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
301 <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#l00142">helpers.h:142</a></div></div>
302 <div class="ttc" id="minmaxloc_8cl_xhtml_a538b4b63f40e7b12891774e03a4f0dec"><div class="ttname"><a href="minmaxloc_8cl.xhtml#a538b4b63f40e7b12891774e03a4f0dec">type_min</a></div><div class="ttdeci">__constant DATA_TYPE16 type_min</div><div class="ttdef"><b>Definition:</b> <a href="minmaxloc_8cl_source.xhtml#l00046">minmaxloc.cl:46</a></div></div>
303 <div class="ttc" id="minmaxloc_8cl_xhtml_a061903419fb2aff60da86e674c76b96e"><div class="ttname"><a href="minmaxloc_8cl.xhtml#a061903419fb2aff60da86e674c76b96e">FloatFlip</a></div><div class="ttdeci">int FloatFlip(float val)</div><div class="ttdef"><b>Definition:</b> <a href="minmaxloc_8cl_source.xhtml#l00035">minmaxloc.cl:35</a></div></div>
304 <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>
305 <div class="ttc" id="minmaxloc_8cl_xhtml_a4464d6f922ea17b4a9ca6a2cec7ddb75"><div class="ttname"><a href="minmaxloc_8cl.xhtml#a4464d6f922ea17b4a9ca6a2cec7ddb75">type_max</a></div><div class="ttdeci">__constant DATA_TYPE16 type_max</div><div class="ttdef"><b>Definition:</b> <a href="minmaxloc_8cl_source.xhtml#l00047">minmaxloc.cl:47</a></div></div>
306 <div class="ttc" id="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail_xhtml_ad91bb73431b4de1f4946ed949d444849"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1fixed__point__arithmetic_1_1detail.xhtml#ad91bb73431b4de1f4946ed949d444849">arm_compute::test::fixed_point_arithmetic::detail::max</a></div><div class="ttdeci">fixed_point&lt; T &gt; max(fixed_point&lt; T &gt; x, fixed_point&lt; T &gt; y)</div><div class="ttdef"><b>Definition:</b> <a href="tests_2validation_2_fixed_point_8h_source.xhtml#l00902">FixedPoint.h:902</a></div></div>
307 <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 &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_convolution_8cpp_source.xhtml#l00147">Convolution.cpp:147</a></div></div>
308 </div><!-- fragment -->
309 </div>
310 </div>
311 <a class="anchor" id="a31ce1a75df24b2037dc76f1748236579"></a>
312 <div class="memitem">
313 <div class="memproto">
314       <table class="memname">
315         <tr>
316           <td class="memname">__kernel void minmaxloc </td>
317           <td>(</td>
318           <td class="paramtype">__global uchar *&#160;</td>
319           <td class="paramname"><em>src_ptr</em>, </td>
320         </tr>
321         <tr>
322           <td class="paramkey"></td>
323           <td></td>
324           <td class="paramtype">uint&#160;</td>
325           <td class="paramname"><em>src_stride_x</em>, </td>
326         </tr>
327         <tr>
328           <td class="paramkey"></td>
329           <td></td>
330           <td class="paramtype">uint&#160;</td>
331           <td class="paramname"><em>src_step_x</em>, </td>
332         </tr>
333         <tr>
334           <td class="paramkey"></td>
335           <td></td>
336           <td class="paramtype">uint&#160;</td>
337           <td class="paramname"><em>src_stride_y</em>, </td>
338         </tr>
339         <tr>
340           <td class="paramkey"></td>
341           <td></td>
342           <td class="paramtype">uint&#160;</td>
343           <td class="paramname"><em>src_step_y</em>, </td>
344         </tr>
345         <tr>
346           <td class="paramkey"></td>
347           <td></td>
348           <td class="paramtype">uint&#160;</td>
349           <td class="paramname"><em>src_offset_first_element_in_bytes</em>, </td>
350         </tr>
351         <tr>
352           <td class="paramkey"></td>
353           <td></td>
354           <td class="paramtype">__global int *&#160;</td>
355           <td class="paramname"><em>min_max</em>, </td>
356         </tr>
357         <tr>
358           <td class="paramkey"></td>
359           <td></td>
360           <td class="paramtype">__global uint *&#160;</td>
361           <td class="paramname"><em>min_max_count</em>, </td>
362         </tr>
363         <tr>
364           <td class="paramkey"></td>
365           <td></td>
366           <td class="paramtype">__global <a class="el" href="struct_coordinates2_d.xhtml">Coordinates2D</a> *&#160;</td>
367           <td class="paramname"><em>min_loc</em>, </td>
368         </tr>
369         <tr>
370           <td class="paramkey"></td>
371           <td></td>
372           <td class="paramtype">uint&#160;</td>
373           <td class="paramname"><em>max_min_loc_count</em>, </td>
374         </tr>
375         <tr>
376           <td class="paramkey"></td>
377           <td></td>
378           <td class="paramtype">__global <a class="el" href="struct_coordinates2_d.xhtml">Coordinates2D</a> *&#160;</td>
379           <td class="paramname"><em>max_loc</em>, </td>
380         </tr>
381         <tr>
382           <td class="paramkey"></td>
383           <td></td>
384           <td class="paramtype">uint&#160;</td>
385           <td class="paramname"><em>max_max_loc_count</em>&#160;</td>
386         </tr>
387         <tr>
388           <td></td>
389           <td>)</td>
390           <td></td><td></td>
391         </tr>
392       </table>
393 </div><div class="memdoc">
394
395 <p>This function counts the min and max occurrences in an image and tags their position. </p>
396 <dl class="section note"><dt>Note</dt><dd>-DCOUNT_MIN_MAX should be specified if we want to count the occurrences of the minimum and maximum values. </dd>
397 <dd>
398 -DLOCATE_MIN and/or -DLOCATE_MAX should be specified if we want to store the position of each occurrence on the given array.</dd></dl>
399 <dl class="params"><dt>Parameters</dt><dd>
400   <table class="params">
401     <tr><td class="paramdir">[in]</td><td class="paramname">src_ptr</td><td>Pointer to the source image. Supported data types: U8 </td></tr>
402     <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
403     <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>
404     <tr><td class="paramdir">[in]</td><td class="paramname">src_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
405     <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>
406     <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 image </td></tr>
407     <tr><td class="paramdir">[in]</td><td class="paramname">min_max</td><td>Pointer to buffer with minimum value in position 0 and maximum value in position 1 </td></tr>
408     <tr><td class="paramdir">[out]</td><td class="paramname">min_max_count</td><td>Pointer to buffer with minimum value occurrences in position 0 and maximum value occurrences in position 1 </td></tr>
409     <tr><td class="paramdir">[out]</td><td class="paramname">min_loc</td><td>Array that holds the location of the minimum value occurrences </td></tr>
410     <tr><td class="paramdir">[in]</td><td class="paramname">max_min_loc_count</td><td>The maximum number of min value occurrences coordinates the array can hold </td></tr>
411     <tr><td class="paramdir">[out]</td><td class="paramname">max_loc</td><td>Array that holds the location of the maximum value occurrences </td></tr>
412     <tr><td class="paramdir">[in]</td><td class="paramname">max_max_loc_count</td><td>The maximum number of max value occurrences coordinates the array can hold </td></tr>
413   </table>
414   </dd>
415 </dl>
416
417 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00143">143</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
418
419 <p>References <a class="el" href="helpers_8h_source.xhtml#l00104">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="helpers_8h_source.xhtml#l00144">Image::ptr</a>, and <a class="el" href="_c_l_2_convolution_8cpp_source.xhtml#l00147">arm_compute::test::validation::src</a>.</p>
420 <div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <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#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="preprocessor">#ifdef IS_DATA_TYPE_FLOAT</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    __global <span class="keywordtype">float</span> *min_max_ptr = (__global <span class="keywordtype">float</span> *)min_max;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keywordtype">float</span>           min_value   = min_max_ptr[0];</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordtype">float</span>           max_value   = min_max_ptr[1];</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">#else  </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    <span class="keywordtype">int</span> min_value = min_max[0];</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    <span class="keywordtype">int</span> max_value = min_max[1];</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* IS_DATA_TYPE_FLOAT */</span><span class="preprocessor"></span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> value = *((__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)src.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#ifdef COUNT_MIN_MAX</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    <span class="keywordflow">if</span>(value == min_value)</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    {</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        uint idx = atomic_inc(&amp;min_max_count[0]);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="preprocessor">#ifdef LOCATE_MIN</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keywordflow">if</span>(idx &lt; max_min_loc_count)</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        {</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;            min_loc[idx].x = get_global_id(0);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;            min_loc[idx].y = get_global_id(1);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        }</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCATE_MIN */</span><span class="preprocessor"></span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    }</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <span class="keywordflow">if</span>(value == max_value)</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    {</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        uint idx = atomic_inc(&amp;min_max_count[1]);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">#ifdef LOCATE_MAX</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <span class="keywordflow">if</span>(idx &lt; max_max_loc_count)</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        {</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;            max_loc[idx].x = get_global_id(0);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;            max_loc[idx].y = get_global_id(1);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        }</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LOCATE_MAX */</span><span class="preprocessor"></span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;    }</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* COUNT_MIN_MAX */</span><span class="preprocessor"></span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
421 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00104">helpers.h:104</a></div></div>
422 <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#l00142">helpers.h:142</a></div></div>
423 <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#l00144">helpers.h:144</a></div></div>
424 <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 &amp; src</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_convolution_8cpp_source.xhtml#l00147">Convolution.cpp:147</a></div></div>
425 </div><!-- fragment -->
426 </div>
427 </div>
428 <h2 class="groupheader">Variable Documentation</h2>
429 <a class="anchor" id="a5a67e1e00d711339bef1e10f0984227c"></a>
430 <div class="memitem">
431 <div class="memproto">
432       <table class="memname">
433         <tr>
434           <td class="memname">__constant int16 idx16 = (int16)(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)</td>
435         </tr>
436       </table>
437 </div><div class="memdoc">
438
439 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00048">48</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
440
441 <p>Referenced by <a class="el" href="minmaxloc_8cl_source.xhtml#l00065">minmax()</a>.</p>
442
443 </div>
444 </div>
445 <a class="anchor" id="a4464d6f922ea17b4a9ca6a2cec7ddb75"></a>
446 <div class="memitem">
447 <div class="memproto">
448       <table class="memname">
449         <tr>
450           <td class="memname">__constant DATA_TYPE16 type_max = ( DATA_TYPE16 )( 0xFF )</td>
451         </tr>
452       </table>
453 </div><div class="memdoc">
454
455 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00047">47</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
456
457 <p>Referenced by <a class="el" href="minmaxloc_8cl_source.xhtml#l00065">minmax()</a>.</p>
458
459 </div>
460 </div>
461 <a class="anchor" id="a538b4b63f40e7b12891774e03a4f0dec"></a>
462 <div class="memitem">
463 <div class="memproto">
464       <table class="memname">
465         <tr>
466           <td class="memname">__constant DATA_TYPE16 type_min = ( DATA_TYPE16 )( 0x0 )</td>
467         </tr>
468       </table>
469 </div><div class="memdoc">
470
471 <p>Definition at line <a class="el" href="minmaxloc_8cl_source.xhtml#l00046">46</a> of file <a class="el" href="minmaxloc_8cl_source.xhtml">minmaxloc.cl</a>.</p>
472
473 <p>Referenced by <a class="el" href="minmaxloc_8cl_source.xhtml#l00065">minmax()</a>.</p>
474
475 </div>
476 </div>
477 </div><!-- contents -->
478 </div><!-- doc-content -->
479 <!-- start footer part -->
480 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
481   <ul>
482     <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="minmaxloc_8cl.xhtml">minmaxloc.cl</a></li>
483     <li class="footer">Generated on Wed May 23 2018 11:36:39 for Compute Library by
484     <a href="http://www.doxygen.org/index.html">
485     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
486   </ul>
487 </div>
488 </body>
489 </html>