arm_compute v19.11
diff --git a/documentation/fft_8cl.xhtml b/documentation/fft_8cl.xhtml
index f880ebe..bf6065b 100644
--- a/documentation/fft_8cl.xhtml
+++ b/documentation/fft_8cl.xhtml
@@ -40,7 +40,7 @@
<img alt="Compute Library" src="https://raw.githubusercontent.com/ARM-software/ComputeLibrary/gh-pages/ACL_logo.png" style="max-width: 100%;margin-top: 15px;margin-left: 10px"/>
<td style="padding-left: 0.5em;">
<div id="projectname">
-  <span id="projectnumber">19.08</span>
+  <span id="projectnumber">19.11</span>
</div>
</td>
</tr>
@@ -634,7 +634,8 @@
</tr>
</table>
</div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">{ \</div><div class="line"> float2 <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, tmp; \</div><div class="line"> w.x = native_cos(phi); \</div><div class="line"> w.y = native_sin(phi); \</div><div class="line"> tmp.x = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.x * input.x) - (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.y * input.y); \</div><div class="line"> tmp.y = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.x * input.y) + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.y * input.x); \</div><div class="line"> input = tmp; \</div><div class="line"> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor< float > w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
+<b>Value:</b><div class="fragment"><div class="line">{ \</div><div class="line"> float2 <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>, tmp; \</div><div class="line"> w.x = native_cos(phi); \</div><div class="line"> w.y = native_sin(phi); \</div><div class="line"> tmp.x = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.x * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.x) - (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.y * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.y); \</div><div class="line"> tmp.y = (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.x * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.y) + (<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">w</a>.y * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.x); \</div><div class="line"> input = tmp; \</div><div class="line"> }</div><div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a1a367830ae09bf6138df822888ec1d71"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a1a367830ae09bf6138df822888ec1d71">arm_compute::test::validation::w</a></div><div class="ttdeci">SimpleTensor< float > w</div><div class="ttdef"><b>Definition:</b> <a href="_c_p_p_2_d_f_t_8cpp_source.xhtml#l00156">DFT.cpp:156</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
</div><!-- fragment -->
<p>Calculates and applies the twiddle factor to a given input. </p>
<dl class="params"><dt>Parameters</dt><dd>
@@ -966,17 +967,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00855">855</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="comment">// Each work-item computes a single radix-2</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  uint nx = kx % Nx;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(c0, c1);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00863"></a><span class="lineno"> 863</span> {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="comment">// Each work-item computes a single radix-2</span></div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  uint nx = kx % Nx;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span> </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(c0, c1);</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a5a63ca1d5404d67d13382a90cfc9b6c3"><div class="ttname"><a href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a></div><div class="ttdeci">#define DFT_2(c0, c1)</div><div class="ttdoc">Computes radix-2 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00046">fft.cl:46</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -1136,17 +1138,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00925">925</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// Each work-item computes a single radix-2</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  uint nx = kx % Nx;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> </div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(c0, c1);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="comment">// Each work-item computes a single radix-2</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span> </div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  uint nx = kx % Nx;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span> </div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span> </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> </div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> </div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span> </div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(c0, c1);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a5a63ca1d5404d67d13382a90cfc9b6c3"><div class="ttname"><a href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a></div><div class="ttdeci">#define DFT_2(c0, c1)</div><div class="ttdoc">Computes radix-2 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00046">fft.cl:46</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -1285,12 +1288,13 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00234">234</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  float4 data = vload4(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(data.s01, data.s23);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  vstore4(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  float4 data = vload4(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(data.s01, data.s23);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  vstore4(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a5a63ca1d5404d67d13382a90cfc9b6c3"><div class="ttname"><a href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a></div><div class="ttdeci">#define DFT_2(c0, c1)</div><div class="ttdoc">Computes radix-2 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00046">fft.cl:46</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>.</p>
</div>
</div>
@@ -1429,13 +1433,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00281">281</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(data1, data2);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// Load two complex input values</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// Compute DFT N = 2</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <a class="code" href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a>(data1, data2);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// Store two complex output values</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a5a63ca1d5404d67d13382a90cfc9b6c3"><div class="ttname"><a href="fft_8cl.xhtml#a5a63ca1d5404d67d13382a90cfc9b6c3">DFT_2</a></div><div class="ttdeci">#define DFT_2(c0, c1)</div><div class="ttdoc">Computes radix-2 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00046">fft.cl:46</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00046">DFT_2</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -1595,17 +1600,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00995">995</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="comment">// Each work-item computes a single radix-3</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2 * Nx, 0, 0));</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(c0, c1, c2);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
+<div class="fragment"><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="comment">// Each work-item computes a single radix-3</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> </div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2 * Nx, 0, 0));</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(c0, c1, c2);</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -1765,17 +1771,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01068">1068</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="comment">// Each work-item computes a single radix-3</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> </div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> </div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2 * Nx, 0));</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> </div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(c0, c1, c2);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
+<div class="fragment"><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  <span class="comment">// Each work-item computes a single radix-3</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> </div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> </div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2 * Nx, 0));</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> </div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(c0, c1, c2);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> </div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -1914,13 +1921,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00330">330</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  float4 data0 = vload4(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2, 0, 0));</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(data0.s01, data0.s23, data1.s01);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  vstore4(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2, 0, 0));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="fragment"><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  float4 data0 = vload4(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2, 0, 0));</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(data0.s01, data0.s23, data1.s01);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  vstore4(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2, 0, 0));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> }</div><div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -2059,13 +2067,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00379">379</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2, 0));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(data0, data1, data2);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="fragment"><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// Load three complex input values</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2, 0));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="comment">// Compute DFT N = 3</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a>(data0, data1, data2);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// Store three complex output values</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div><div class="ttc" id="fft_8cl_xhtml_ac6ec77d2e41d56919c14c1483eee94ac"><div class="ttname"><a href="fft_8cl.xhtml#ac6ec77d2e41d56919c14c1483eee94ac">DFT_3</a></div><div class="ttdeci">#define DFT_3(c0, c1, c2)</div><div class="ttdoc">Computes radix-3 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00063">fft.cl:63</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00063">DFT_3</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -2225,17 +2234,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01141">1141</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="comment">// Each work-item computes a single radix-4</span></div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> </div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> </div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2 * Nx, 0, 0));</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 3 * Nx, 0, 0));</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(c0, c1, c2, c3);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
+<div class="fragment"><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> {</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="comment">// Each work-item computes a single radix-4</span></div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> </div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> </div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> </div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2 * Nx, 0, 0));</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 3 * Nx, 0, 0));</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(c0, c1, c2, c3);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_af97e6d43f8b70bcf009d521f8909db25"><div class="ttname"><a href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a></div><div class="ttdeci">#define DFT_4(c0, c1, c2, c3)</div><div class="ttdoc">Computes radix-4 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00081">fft.cl:81</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -2395,17 +2405,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01217">1217</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="comment">// Each work-item computes a single radix-4</span></div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2 * Nx, 0));</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3 * Nx, 0));</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(c0, c1, c2, c3);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
+<div class="fragment"><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> {</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  <span class="comment">// Each work-item computes a single radix-4</span></div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> </div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2 * Nx, 0));</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3 * Nx, 0));</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(c0, c1, c2, c3);</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_af97e6d43f8b70bcf009d521f8909db25"><div class="ttname"><a href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a></div><div class="ttdeci">#define DFT_4(c0, c1, c2, c3)</div><div class="ttdoc">Computes radix-4 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00081">fft.cl:81</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -2544,12 +2555,13 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00430">430</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  float8 data = vload8(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(data.s01, data.s23, data.s45, data.s67);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  vstore8(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
+<div class="fragment"><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  float8 data = vload8(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(data.s01, data.s23, data.s45, data.s67);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  vstore8(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_af97e6d43f8b70bcf009d521f8909db25"><div class="ttname"><a href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a></div><div class="ttdeci">#define DFT_4(c0, c1, c2, c3)</div><div class="ttdoc">Computes radix-4 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00081">fft.cl:81</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>.</p>
</div>
</div>
@@ -2688,13 +2700,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00477">477</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2, 0));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3, 0));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(data0, data1, data2, data3);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
+<div class="fragment"><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> </div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="comment">// Load four complex input values</span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2, 0));</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3, 0));</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">// Compute DFT N = 4</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a>(data0, data1, data2, data3);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// Store four complex output values</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_af97e6d43f8b70bcf009d521f8909db25"><div class="ttname"><a href="fft_8cl.xhtml#af97e6d43f8b70bcf009d521f8909db25">DFT_4</a></div><div class="ttdeci">#define DFT_4(c0, c1, c2, c3)</div><div class="ttdoc">Computes radix-4 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00081">fft.cl:81</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00081">DFT_4</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -2854,17 +2867,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01293">1293</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="comment">// Each work-item computes a single radix-5</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> </div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2 * Nx, 0, 0));</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 3 * Nx, 0, 0));</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 4 * Nx, 0, 0));</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> </div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(c0, c1, c2, c3, c4);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> </div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
+<div class="fragment"><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="comment">// Each work-item computes a single radix-5</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> </div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2 * Nx, 0, 0));</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 3 * Nx, 0, 0));</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 4 * Nx, 0, 0));</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> </div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> </div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> </div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(c0, c1, c2, c3, c4);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> </div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -3024,17 +3038,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01372">1372</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> {</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="comment">// Each work-item computes a single radix-5</span></div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> </div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2 * Nx, 0));</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3 * Nx, 0));</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4 * Nx, 0));</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(c0, c1, c2, c3, c4);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> </div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
+<div class="fragment"><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> {</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  <span class="comment">// Each work-item computes a single radix-5</span></div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> </div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2 * Nx, 0));</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3 * Nx, 0));</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4 * Nx, 0));</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> </div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(c0, c1, c2, c3, c4);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> </div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -3173,13 +3188,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00530">530</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  float8 data0 = vload8(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 4, 0, 0));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(data0.s01, data0.s23, data0.s45, data0.s67, data1.s01);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  vstore8(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4, 0, 0));</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> }</div><div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="fragment"><div class="line"><a name="l00537"></a><span class="lineno"> 537</span> {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  float8 data0 = vload8(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 4, 0, 0));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(data0.s01, data0.s23, data0.s45, data0.s67, data1.s01);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  vstore8(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4, 0, 0));</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> }</div><div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -3318,13 +3334,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00579">579</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2, 0));</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3, 0));</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4, 0));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(data0, data1, data2, data3, data4);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> }</div><div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="fragment"><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// Load five complex input values</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2, 0));</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3, 0));</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4, 0));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// Compute DFT N = 5</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a>(data0, data1, data2, data3, data4);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> </div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// Store five complex output values</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> }</div><div class="ttc" id="fft_8cl_xhtml_a565f17c6fe3e9462057bb523e0127280"><div class="ttname"><a href="fft_8cl.xhtml#a565f17c6fe3e9462057bb523e0127280">DFT_5</a></div><div class="ttdeci">#define DFT_5(c0, c1, c2, c3, c4)</div><div class="ttdoc">Computes radix-5 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00109">fft.cl:109</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00109">DFT_5</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -3484,17 +3501,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01451">1451</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> {</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  <span class="comment">// Each work-item computes a single radix-7</span></div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> </div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2 * Nx, 0, 0));</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 3 * Nx, 0, 0));</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 4 * Nx, 0, 0));</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 5 * Nx, 0, 0));</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 6 * Nx, 0, 0));</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> </div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(c0, c1, c2, c3, c4, c5, c6);</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 5 * Nx, 0, 0));</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6 * Nx, 0, 0));</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> {</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  <span class="comment">// Each work-item computes a single radix-7</span></div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> </div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> </div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> </div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2 * Nx, 0, 0));</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 3 * Nx, 0, 0));</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 4 * Nx, 0, 0));</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 5 * Nx, 0, 0));</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 6 * Nx, 0, 0));</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> </div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(c0, c1, c2, c3, c4, c5, c6);</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> </div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 5 * Nx, 0, 0));</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6 * Nx, 0, 0));</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ad04a4028658f997aaca067742c2e8a49"><div class="ttname"><a href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a></div><div class="ttdeci">#define DFT_7(c0, c1, c2, c3, c4, c5, c6)</div><div class="ttdoc">Computes radix-7 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00142">fft.cl:142</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -3654,17 +3672,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01536">1536</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> {</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="comment">// Each work-item computes a single radix-7</span></div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> </div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> </div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> </div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2 * Nx, 0));</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3 * Nx, 0));</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4 * Nx, 0));</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 5 * Nx, 0));</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 6 * Nx, 0));</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> </div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(c0, c1, c2, c3, c4, c5, c6);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> </div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5 * Nx, 0));</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6 * Nx, 0));</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> {</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="comment">// Each work-item computes a single radix-7</span></div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> </div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> </div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> </div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> </div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2 * Nx, 0));</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3 * Nx, 0));</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4 * Nx, 0));</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 5 * Nx, 0));</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 6 * Nx, 0));</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> </div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(c0, c1, c2, c3, c4, c5, c6);</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> </div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5 * Nx, 0));</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6 * Nx, 0));</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ad04a4028658f997aaca067742c2e8a49"><div class="ttname"><a href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a></div><div class="ttdeci">#define DFT_7(c0, c1, c2, c3, c4, c5, c6)</div><div class="ttdoc">Computes radix-7 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00142">fft.cl:142</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -3803,13 +3822,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00634">634</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  float8 data0 = vload8(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  float4 data1 = vload4(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 4, 0, 0));</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 6, 0, 0));</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(data0.s01, data0.s23, data0.s45, data0.s67, data1.s01, data1.s23, data2.s01);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  vstore8(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  vstore4(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4, 0, 0));</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6, 0, 0));</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> </div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  float8 data0 = vload8(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  float4 data1 = vload4(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 4, 0, 0));</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 6, 0, 0));</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(data0.s01, data0.s23, data0.s45, data0.s67, data1.s01, data1.s23, data2.s01);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  vstore8(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  vstore4(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4, 0, 0));</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6, 0, 0));</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ad04a4028658f997aaca067742c2e8a49"><div class="ttname"><a href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a></div><div class="ttdeci">#define DFT_7(c0, c1, c2, c3, c4, c5, c6)</div><div class="ttdoc">Computes radix-7 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00142">fft.cl:142</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -3948,13 +3968,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00685">685</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2, 0));</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3, 0));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4, 0));</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  float2 data5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 5, 0));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  float2 data6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 6, 0));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> </div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(data0, data1, data2, data3, data4, data5, data6);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  vstore2(data5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5, 0));</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  vstore2(data6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6, 0));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
+<div class="fragment"><div class="line"><a name="l00692"></a><span class="lineno"> 692</span> {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span> </div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="comment">// Load seven complex input values</span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2, 0));</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3, 0));</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4, 0));</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  float2 data5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 5, 0));</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  float2 data6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 6, 0));</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span> </div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="comment">// Compute DFT N = 7</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a>(data0, data1, data2, data3, data4, data5, data6);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="comment">// Store seven complex output values</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  vstore2(data5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5, 0));</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  vstore2(data6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6, 0));</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> }</div><div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_ad04a4028658f997aaca067742c2e8a49"><div class="ttname"><a href="fft_8cl.xhtml#ad04a4028658f997aaca067742c2e8a49">DFT_7</a></div><div class="ttdeci">#define DFT_7(c0, c1, c2, c3, c4, c5, c6)</div><div class="ttdoc">Computes radix-7 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00142">fft.cl:142</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00142">DFT_7</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -4114,17 +4135,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01621">1621</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> {</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <span class="comment">// Each work-item computes a single radix-8</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> </div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  input.ptr += n * input.stride_x + get_global_id(1) * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, Nx, 0, 0));</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 2 * Nx, 0, 0));</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 3 * Nx, 0, 0));</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 4 * Nx, 0, 0));</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 5 * Nx, 0, 0));</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 6 * Nx, 0, 0));</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  float2 c7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 7 * Nx, 0, 0));</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(7 * phi, c7);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> </div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(c0, c1, c2, c3, c4, c5, c6, c7);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> </div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 5 * Nx, 0, 0));</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6 * Nx, 0, 0));</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  vstore2(c7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 7 * Nx, 0, 0));</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
+<div class="fragment"><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> {</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  <span class="comment">// Each work-item computes a single radix-8</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  uint kx = get_global_id(0);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> </div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> </div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + get_global_id(1) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += n * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + get_global_id(1) * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, Nx, 0, 0));</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 2 * Nx, 0, 0));</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 3 * Nx, 0, 0));</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 4 * Nx, 0, 0));</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 5 * Nx, 0, 0));</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 6 * Nx, 0, 0));</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  float2 c7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 7 * Nx, 0, 0));</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> </div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(7 * phi, c7);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> </div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(c0, c1, c2, c3, c4, c5, c6, c7);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> </div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, Nx, 0, 0));</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 2 * Nx, 0, 0));</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 3 * Nx, 0, 0));</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 4 * Nx, 0, 0));</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 5 * Nx, 0, 0));</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 6 * Nx, 0, 0));</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  vstore2(c7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 7 * Nx, 0, 0));</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -4284,17 +4306,18 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l01709">1709</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> {</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <span class="comment">// Each work-item computes a single radix-8</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> </div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> </div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> </div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(input);</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  input.ptr += get_global_id(0) * input.stride_x + n * input.stride_y + get_global_id(2) * input.stride_z;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.ptr);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, Nx, 0));</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2 * Nx, 0));</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3 * Nx, 0));</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4 * Nx, 0));</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 5 * Nx, 0));</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 6 * Nx, 0));</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  float2 c7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 7 * Nx, 0));</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> </div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(7 * phi, c7);</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> </div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(c0, c1, c2, c3, c4, c5, c6, c7);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5 * Nx, 0));</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6 * Nx, 0));</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  vstore2(c7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 7 * Nx, 0));</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">helpers.h:182</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">helpers.h:180</a></div></div>
+<div class="fragment"><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> {</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <span class="comment">// Each work-item computes a single radix-8</span></div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  uint kx = get_global_id(1);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> </div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  <span class="comment">// Compute nx</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  uint nx = kx % Nx;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> </div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  <span class="comment">// Compute n index</span></div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  uint n = nx + (kx / Nx) * Ni;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> </div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr += get_global_id(0) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_x + n * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_y + get_global_id(2) * <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.stride_z;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>(output);</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a> += get_global_id(0) * output.<a class="code" href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">stride_x</a> + n * output.<a class="code" href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">stride_y</a> + get_global_id(2) * output.<a class="code" href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">stride_z</a>;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> </div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>  float2 c0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  float2 c1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, Nx, 0));</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  float2 c2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2 * Nx, 0));</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>  float2 c3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3 * Nx, 0));</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>  float2 c4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4 * Nx, 0));</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>  float2 c5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 5 * Nx, 0));</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  float2 c6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 6 * Nx, 0));</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  float2 c7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 7 * Nx, 0));</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> </div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>  <span class="comment">// Compute phi</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>  <span class="keywordtype">float</span> phi = (float)nx * exp_const;</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> </div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  <span class="comment">// Multiply by twiddle factor</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(phi, c1);</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(2 * phi, c2);</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(3 * phi, c3);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(4 * phi, c4);</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(5 * phi, c5);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(6 * phi, c6);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  <a class="code" href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a>(7 * phi, c7);</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> </div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(c0, c1, c2, c3, c4, c5, c6, c7);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> </div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>  vstore2(c0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>  vstore2(c1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, Nx, 0));</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  vstore2(c2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2 * Nx, 0));</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>  vstore2(c3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3 * Nx, 0));</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  vstore2(c4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4 * Nx, 0));</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  vstore2(c5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5 * Nx, 0));</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>  vstore2(c6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6 * Nx, 0));</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  vstore2(c7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 7 * Nx, 0));</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> }</div><div class="ttc" id="fft_8cl_xhtml_ad4dcc4a8b94f263cd19c59fdc2cec3d2"><div class="ttname"><a href="fft_8cl.xhtml#ad4dcc4a8b94f263cd19c59fdc2cec3d2">TWIDDLE_FACTOR_MULTIPLICATION</a></div><div class="ttdeci">#define TWIDDLE_FACTOR_MULTIPLICATION(phi, input)</div><div class="ttdoc">Calculates and applies the twiddle factor to a given input.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00031">fft.cl:31</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ad5ff7a2b2bd0eec50fe09c254b127d1c"><div class="ttname"><a href="struct_tensor3_d.xhtml#ad5ff7a2b2bd0eec50fe09c254b127d1c">Tensor3D::stride_z</a></div><div class="ttdeci">int stride_z</div><div class="ttdoc">Stride of the image in Z dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">helpers.h:364</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_ae01febbfd0689ef709f3ff6fdd2abc7e"><div class="ttname"><a href="struct_tensor3_d.xhtml#ae01febbfd0689ef709f3ff6fdd2abc7e">Tensor3D::stride_x</a></div><div class="ttdeci">int stride_x</div><div class="ttdoc">Stride of the image in X dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">helpers.h:362</a></div></div>
<div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">helpers.h:148</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">helpers.h:181</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a79e8e562daa6599317d2d1cd86ef1bf2"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a79e8e562daa6599317d2d1cd86ef1bf2">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT_NO_STEP(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">helpers.h:330</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_a4f0b90c9ecd6e57ceb3f37332fefe8f1"><div class="ttname"><a href="struct_tensor3_d.xhtml#a4f0b90c9ecd6e57ceb3f37332fefe8f1">Tensor3D::stride_y</a></div><div class="ttdeci">int stride_y</div><div class="ttdoc">Stride of the image in Y dimension (in bytes)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">helpers.h:363</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00148">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00180">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00181">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00182">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00330">CONVERT_TO_TENSOR3D_STRUCT_NO_STEP</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00362">Tensor3D::stride_x</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00363">Tensor3D::stride_y</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00364">Tensor3D::stride_z</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>, and <a class="el" href="fft_8cl_source.xhtml#l00031">TWIDDLE_FACTOR_MULTIPLICATION</a>.</p>
</div>
</div>
@@ -4433,12 +4456,13 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00744">744</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  float16 data = vload16(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(data.s01, data.s23, data.s45, data.s67, data.s89, data.sAB, data.sCD, data.sEF);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  vstore16(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> }</div><div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
+<div class="fragment"><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  float16 data = vload16(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(data.s01, data.s23, data.s45, data.s67, data.s89, data.sAB, data.sCD, data.sEF);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  vstore16(data, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> }</div><div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>.</p>
</div>
</div>
@@ -4577,13 +4601,14 @@
</dl>
<p class="definition">Definition at line <a class="el" href="fft_8cl_source.xhtml#l00791">791</a> of file <a class="el" href="fft_8cl_source.xhtml">fft.cl</a>.</p>
-<div class="fragment"><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> input = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(input);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = input;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)input.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 1, 0));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 2, 0));</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 3, 0));</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 4, 0));</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  float2 data5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 5, 0));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  float2 data6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 6, 0));</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  float2 data7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&input, 0, 7, 0));</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> </div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(data0, data1, data2, data3, data4, data5, data6, data7);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  vstore2(data5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5, 0));</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  vstore2(data6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6, 0));</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  vstore2(data7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 7, 0));</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> }</div><div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00176">helpers.h:176</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">helpers.h:144</a></div></div>
-<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">helpers.h:178</a></div></div>
-<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">helpers.h:340</a></div></div>
+<div class="fragment"><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="comment">// Get tensor pointers</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a> = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor">#ifdef IN_PLACE</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="preprocessor">#else </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <a class="code" href="struct_tensor3_d.xhtml">Tensor3D</a> output = <a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a>(output);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="preprocessor">#endif </span><span class="comment">/* IN_PLACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> </div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="comment">// Load eight complex input values</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  float2 data0 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>.ptr);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  float2 data1 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 1, 0));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  float2 data2 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 2, 0));</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  float2 data3 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 3, 0));</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  float2 data4 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 4, 0));</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  float2 data5 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 5, 0));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  float2 data6 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 6, 0));</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  float2 data7 = vload2(0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&<a class="code" href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">input</a>, 0, 7, 0));</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span> </div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="comment">// Compute DFT N = 8</span></div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a>(data0, data1, data2, data3, data4, data5, data6, data7);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="comment">// Store eight complex output values</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  vstore2(data0, 0, (__global <span class="keywordtype">float</span> *)output.<a class="code" href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  vstore2(data1, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 1, 0));</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  vstore2(data2, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 2, 0));</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  vstore2(data3, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 3, 0));</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  vstore2(data4, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 4, 0));</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  vstore2(data5, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 5, 0));</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  vstore2(data6, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 6, 0));</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  vstore2(data7, 0, (__global <span class="keywordtype">float</span> *)<a class="code" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a>(&output, 0, 7, 0));</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> }</div><div class="ttc" id="fft_8cl_xhtml_a4c4ce3f10939dd4237d0adee00086a53"><div class="ttname"><a href="fft_8cl.xhtml#a4c4ce3f10939dd4237d0adee00086a53">DFT_8</a></div><div class="ttdeci">#define DFT_8(c0, c1, c2, c3, c4, c5, c6, c7)</div><div class="ttdoc">Computes radix-8 butterfly unit.</div><div class="ttdef"><b>Definition:</b> <a href="fft_8cl_source.xhtml#l00172">fft.cl:172</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml"><div class="ttname"><a href="struct_tensor3_d.xhtml">Tensor3D</a></div><div class="ttdoc">Structure to hold 3D tensor information.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00358">helpers.h:358</a></div></div>
+<div class="ttc" id="namespacearm__compute_1_1test_1_1validation_xhtml_a8fcf2ddd9a1d58b1b280f5c0aed71845"><div class="ttname"><a href="namespacearm__compute_1_1test_1_1validation.xhtml#a8fcf2ddd9a1d58b1b280f5c0aed71845">arm_compute::test::validation::input</a></div><div class="ttdeci">auto input</div><div class="ttdef"><b>Definition:</b> <a href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">LSTMLayerQuantized.cpp:487</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a31c8c760f08fb1a331b16b7c204321dc"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a31c8c760f08fb1a331b16b7c204321dc">CONVERT_TO_TENSOR3D_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_TENSOR3D_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">helpers.h:326</a></div></div>
+<div class="ttc" id="struct_tensor3_d_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_tensor3_d.xhtml#acf52c23cbd7424606c10a606524e3e32">Tensor3D::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="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">helpers.h:360</a></div></div>
+<div class="ttc" id="src_2core_2_c_l_2cl__kernels_2_helpers_8h_xhtml_a2101b2fe0193ce227ae4e0945e321d85"><div class="ttname"><a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h.xhtml#a2101b2fe0193ce227ae4e0945e321d85">tensor3D_offset</a></div><div class="ttdeci">__global const uchar * tensor3D_offset(const Tensor3D *tensor, int x, int y, int z)</div><div class="ttdoc">Get the pointer position of a Tensor3D.</div><div class="ttdef"><b>Definition:</b> <a href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">helpers.h:522</a></div></div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00144">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00178">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00340">tensor3D_offset()</a>.</p>
+<p class="reference">References <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00326">CONVERT_TO_TENSOR3D_STRUCT</a>, <a class="el" href="fft_8cl_source.xhtml#l00172">DFT_8</a>, <a class="el" href="_c_l_2_l_s_t_m_layer_quantized_8cpp_source.xhtml#l00487">arm_compute::test::validation::input</a>, <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00360">Tensor3D::ptr</a>, and <a class="el" href="src_2core_2_c_l_2cl__kernels_2_helpers_8h_source.xhtml#l00522">tensor3D_offset()</a>.</p>
</div>
</div>
@@ -4593,7 +4618,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="fft_8cl.xhtml">fft.cl</a></li>
- <li class="footer">Generated on Mon Sep 2 2019 11:47:29 for Compute Library by
+ <li class="footer">Generated on Thu Nov 28 2019 16:53:07 for Compute Library by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
</ul>